Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Как в одной картинке вывести несколько графиков по классам?

#python #pandas #dataframe #matplotlib #seaborn


Загружаю данные из датасета iris:

from sklearn import datasets
data = datasets.load_iris(return_X_y=False)
X = data.data
y = data.target
names = data.target_names


Датафрейм со всеми данными и целевой переменной в y:

dfy = pd.DataFrame(y)
df = pd.DataFrame(X)
dfy = dfy.rename(columns={0: 'y'})
df_ = pd.concat([df,dfy], axis = 1)

sns.pairplot(df_, hue = 'y')


Несколько боксплотов в одной картинке без классов выводится:

plt.figure(figsize=(14,7))
sns.boxplot(data=df_.drop(['y'], axis=1), palette=sns.color_palette('Greens'))
plt.show()


А несколько бохплотов с классами из столбца y смогла вывести только так:

for i in range(4):
        sns.boxplot(data=df_, x ='y', y = i, hue='y')
        plt.show()


Как вывести несколько бохплотов с классами в одной картинке?
    


Ответы

Ответ 1



df = (pd.DataFrame( data.data, columns=data.feature_names) .assign(target=data.target)) d = (df.set_index("target") .stack() .reset_index(name="val") .rename(columns={"level_1":"feature"})) sns.boxplot(x="feature", y="val", hue="target", data=d) или так: sns.boxplot(x="feature", y="val", data=d)

Комментариев нет:

Отправить комментарий