来自 Pandas Dataframe 的 Seaborn Violin Plot,每列都有自己独立的小提琴图
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/46134113/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Seaborn Violin Plot from Pandas Dataframe, each column its own separate violin plot
提问by aw94
I have Pandas Dataframe with structure:
我有 Pandas Dataframe 的结构:
A B
0 1 1
1 2 1
2 3 4
3 3 7
4 6 8
How do I generate a Seaborn Violin plot with each column as its own separate violin plot for side-by-side comparison?
如何生成一个 Seaborn Violin 图,每列作为它自己单独的小提琴图进行并排比较?
回答by jezrael
You can first reshape by melt
for groups from columns and then seaborn.violinplot
:
您可以首先通过melt
for 来自列的组重新整形,然后seaborn.violinplot
:
#old version of pandas
#df = pd.melt(df, var_name='groups', value_name='vals')
df = df.melt(var_name='groups', value_name='vals')
print (df)
groups vals
0 A 1
1 A 2
2 A 3
3 A 3
4 A 6
5 B 1
6 B 1
7 B 4
8 B 7
9 B 8
ax = sns.violinplot(x="groups", y="vals", data=df)
回答by Nathan
seaborn
(at least, version 0.8.1; not sure if this is new) supports what you want without messing around with your dataframe at all:
seaborn
(至少是 0.8.1 版;不确定这是否是新的)支持您想要的内容,而根本不会弄乱您的数据框:
import pandas as pd
import seaborn as sns
df = pd.DataFrame({'A': [1, 2, 3, 3, 6], 'B': [1, 1, 4, 7, 8]})
sns.violinplot(data=df)
(Note that you do need to set data=df
; if you just pass in df
as the first argument (equivalent to setting x=df
in the function call), it seems like it concatenates the columns together and then makes a violin plot of all of the data)
(请注意,您确实需要设置data=df
; 如果您只是df
作为第一个参数传入(相当于x=df
在函数调用中设置),它似乎将列连接在一起,然后制作所有数据的小提琴图)