Я намерен построить несколько столбцов в pandas dataframe
, все сгруппированы по другому столбцу, используя groupby
внутри seaborn.boxplot
. Здесь есть приятный ответ на аналогичную проблему в matplotlib
matplotlib: Group boxplots, но учитывая тот факт, что seaborn.boxplot
поставляется с опцией groupby
, я думал, что это было бы намного проще сделать это в seaborn
.
Здесь мы переходим к воспроизводимому примеру, который терпит неудачу:
import seaborn as sns
import pandas as pd
df = pd.DataFrame(
[
[2, 4, 5, 6, 1],
[4, 5, 6, 7, 2],
[5, 4, 5, 5, 1],
[10, 4, 7, 8, 2],
[9, 3, 4, 6, 2],
[3, 3, 4, 4, 1]
], columns=['a1', 'a2', 'a3', 'a4', 'b'])
#Plotting by seaborn
sns.boxplot(df[['a1','a2', 'a3', 'a4']], groupby=df.b)
То, что я получаю, это то, что полностью игнорирует параметр groupby
:
Если я делаю это с одним столбцом, он работает благодаря другому SO-запросу Seaborn groupby pandas Series:
sns.boxplot(df.a1, groupby=df.b)
Итак, я хотел бы получить все мои столбцы в одном сюжете (все столбцы имеют аналогичный масштаб).
EDIT:
Вышеупомянутый вопрос SO был отредактирован и теперь включает в себя "не чистый" ответ на эту проблему, но было бы неплохо, если бы у кого-то была лучшая идея для этой проблемы.