【问题标题】:Seaborn Violin Plot from Pandas Dataframe, each column its own separate violin plot来自 Pandas Dataframe 的 Seaborn 小提琴图,每列都有自己单独的小提琴图
【发布时间】:2018-02-18 10:06:24
【问题描述】:

我有带有结构的 Pandas 数据框:

   A  B
0  1  1
1  2  1
2  3  4
3  3  7
4  6  8

如何生成 Seaborn Violin 图,每列作为自己的独立小提琴图以进行并排比较?

【问题讨论】:

  • 我建议接受另一个答案,因为这是大多数人想要的......

标签: pandas seaborn


【解决方案1】:

您可以先通过melt 对列中的组进行整形,然后再通过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)

【讨论】:

    【解决方案2】:

    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)
    

    (请注意,您确实需要设置data=df;如果您只是将df 作为第一个参数传入(相当于在函数调用中设置x=df),它似乎将列连接在一起,然后绘制所有数据的小提琴图)

    【讨论】:

    • 简单而实用的答案。如果我可以补充一点,如果您的列不仅仅是“A”和“B”列,您可以尝试这样做:sns.violinplot(data=df[["A", "B"]])
    猜你喜欢
    • 2023-03-31
    • 2017-05-25
    • 2020-10-23
    • 2021-08-29
    • 2021-10-14
    • 2018-01-15
    • 2021-02-23
    • 2017-09-03
    • 1970-01-01
    相关资源
    最近更新 更多