Фильтровать данные в объекте Axes - PullRequest
2 голосов
/ 26 мая 2020

У меня есть график с сгруппированной осью x. Я попытался решить эту проблему, вращая метки и увеличивая размер фигуры. В результате моя ось X больше не была сгруппирована, но метки стали нечитабельно маленькими.

Я думал, что смогу решить эту проблему, отфильтровав данные, которые ниже определенного порога. Например, я не хотел отображать count <50, но я понятия не имею, как этого добиться. </p>

Мой текущий код + график.

sns.set_style('whitegrid')
ax = sns.countplot(x="Model", data=csv_data)
ax.set_xticklabels(ax.get_xticklabels(), rotation=40, ha="right")

plt.tight_layout()
plt.rcParams["figure.figsize"] = (50, 10)
plt.show()

countplot

1 Ответ

0 голосов
/ 08 июня 2020

Чтобы отделить данные от визуализации, «Модель» агрегируется и объединяется с исходными данными для создания визуализации условного извлечения.

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
import random, string

model_name = []
model_list = []
for i in range(100):
    n = np.random.randint(5,15,(1,))
    tmp = ''.join(random.choices(string.ascii_letters + string.digits, k=int(n)))
    model_name.append(tmp)
    model_list = random.choices(model_name, k=100)

df = pd.DataFrame({'Model':model_list})
# new dataframe by value_counts
df2 = df['Model'].value_counts().to_frame(name='count')
df2.reset_index(drop=False,inplace=True)
df2.columns = ['Model','count']
# dataframe combine
df = df.merge(df2, on='Model')
df = df[df['count'] >= 2] # condition

fig = plt.figure(figsize=(16,9),dpi=144)

sns.set_style('whitegrid')
ax = sns.countplot(x="Model", data=df)
ax.set_xticklabels(ax.get_xticklabels(), rotation=40, ha="right")

plt.tight_layout()
plt.show()

enter image description here Без условий

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...