首页 > 解决方案 > 分组数据帧的 Seaborn swarmplot

问题描述

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

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 关键字。那么,我怎样才能方便地将这个数据框绘制为分组的 swarmplots 呢?我想要与仅使用 swarmplots 而不是箱线图显示的相同数字。我玩弄了 groupby 对象本身:

df.groupby(by="Cluster")

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

标签: pythonpandasseabornpandas-groupby

解决方案


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

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

给你:

seaborn 中的群体阴谋

但是,如果您有另一个要着色的类别,例如

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")

并得到:

带有类别的群体图


推荐阅读