Как построить вложенную коробчатую диаграмму в Seaborn из трех фреймов данных - PullRequest
0 голосов
/ 29 мая 2020

У меня есть три набора данных, и теперь я делаю 3 разных ящичных диаграммы. Прямо сейчас я использую:

chart1 = sns.catplot(x="Provider", y="Appearances", kind="box", data=mlt_sample1k)
chart2 = sns.catplot(x="Provider", y="Appearances", kind="box", data=mlt_sample10k)
chart3 = sns.catplot(x="Provider", y="Appearances", kind="box", data=mlt_sample100k)

, где mlt_sample1k, mlt_sample10k и mlt_sample100k - мои три фрейма данных.

Я хочу объединить их в одну коробочную диаграмму с 3 параллельные поля для каждого поставщика, как в примере из документации. Что-то вроде:

enter image description here

, но с 3 полями и Чт, Пт и др. c будет моей категорией "провайдера". Я вижу, что в документах они просто используют:

ax = sns.boxplot(x="day", y="total_bill", hue="smoker",

                 data=tips, palette="Set3")

Однако это не работает для меня, так как я должен указать три набора данных, по одному для каждого поля. Как я могу это сделать?

РЕДАКТИРОВАТЬ: структура моих фреймов данных всегда одна и та же:

item  |  provider  | appearances

'dog'    'prov1'      0.001
'cat'    'prov2'      0.02
'pig'    'prov1'      0.03
...

Ящичные диаграммы представляют статистику элементов в соответствии со столбцом внешнего вида для каждого поставщика (всего 6 ) для каждого фрейма данных.

Три фрейма данных НЕ имеют одинаковой длины.

1 Ответ

1 голос
/ 30 мая 2020

IIU C, вы можете concat три фрейма данных и assign столбец, который будет использоваться в качестве оттенка, например:

sns.catplot(x="Provider", y="Appearances", 
            kind="box", hue='h',
            data=pd.concat([mlt_sample1k.assign(h='1k'), 
                            mlt_sample10k.assign(h='10k'), 
                            mlt_sample100k.assign(h='100k')])
           )
...