分组数据帧的 Seaborn swarmplot

Posted

技术标签:

【中文标题】分组数据帧的 Seaborn swarmplot【英文标题】:Seaborn swarmplot of grouped dataframe 【发布时间】:2019-05-11 07:40:28 【问题描述】:

当我在这里有这样的数据框时:

import pandas as pd
import seaborn as sns
import random

random.seed(0)

df = pd.DataFrame("Data":[random.random() for i in range(100)], "Cluster":[random.randint(0,10) for i in range(100)])

我可以很容易地将 seaborn 的集群绘制为箱线图:

sns.boxplot(df["Data"], groupby=df["Cluster"])

这给了我这样的东西:

不幸的是 seaborn swarmplot 没有 groupby 关键字。那么,我怎样才能方便地将这个数据框绘制为分组的 swarmplot 呢?我想要与仅使用 swarmplots 而不是 boxplots 显示的相同数字。我玩弄了 groupby 对象本身:

df.groupby(by="Cluster")

到目前为止,我无法说服 seaborn 接受它。

【问题讨论】:

【参考方案1】:

我认为您不需要groupby - 您只需要将集群指定为您的 x 值并将数据指定为您的 y:

sns.swarmplot(data=df, x="Cluster", y="Data")

给你:

但是,如果您有其他类别想要着色,例如

df = pd.DataFrame("Data":[random.random() for _ in range(100)],
                   "Cluster":[random.randint(0,10) for _ in range(100)],
                   "Category": [random.choice(("A", "B")) for _ in range(100)])

然后您可以像这样使用hue 参数:

sns.swarmplot(data=df, x="Cluster", y="Data", hue="Category")

然后得到:

【讨论】:

嗯,这比预期的要容易。

以上是关于分组数据帧的 Seaborn swarmplot的主要内容,如果未能解决你的问题,请参考以下文章

Python Seaborn swarmplot躲闪的顺序

python 3 pandas和seaborn使用swarmplot进行斗争-multiIndex

来自seaborn facetgrid中不同数据帧的两行

使用单个数据帧的多个标签调整图例 Seaborn 联合图

seaborn 数据可视化(二)带有类别属性的数据可视化

Seaborn