python - 如何在seaborn图形级箱线图上叠加数据点

标签 python matplotlib seaborn boxplot swarmplot

我有以下数据框和下面的图 - 我想为因子图中的每个箱形图添加数据点,但我在将箱形图和条形图组合到同一个图中时遇到问题(即它们不重叠,它们出现在下面)彼此)。有解决办法吗?

import pandas as pd
import datetime

idx = pd.date_range('01-01-2020', '01-25-2020')

d = pd.Series({'01-01-2020': 1,
               '01-25-2020': 1})

d.index = pd.DatetimeIndex(d.index)

d = d.reindex(idx, fill_value=0)
df = pd.DataFrame(d).rename_axis("dt").reset_index()
df.drop(columns=df.columns[1], inplace=True)

# calculate week number 
df["week"] = df["dt"].dt.week

# create column counts for 'nhsbt centres'
df["A"] = np.random.randint(0, 50, df.shape[0])
df["B"] = np.random.randint(0, 30, df.shape[0])
df["C"] = np.random.randint(0, 20, df.shape[0])

# melt dataframe 
df1 = df[["A", "B", "C", "week"]]
df1 = df1.set_index("week")
df1 = df1.melt(ignore_index=False)
df1["week"] = df1.index

# make boxplot
sns.factorplot("week", "value", col="variable", data=df1, kind="box")

最佳答案

import seaborn as sns

# make boxplot with data from the OP
g = sns.catplot(x="week", y="value", col="variable", data=df1, kind="box")
g.map(sns.swarmplot, 'week', 'value', color='k', order=sorted(df1.week.unique()))

enter image description here

关于python - 如何在seaborn图形级箱线图上叠加数据点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68950379/

相关文章:

python - 根据当前时间戳获取会计年度-python

python - 读取和写入数据包 python-scapy

python - 解析字典中的文本并分成键和值

python - 当值超过阈值时不同的标记颜色

python - Seaborn - 从 DataFrame 直方图中删除间距

python - Pandas:InvalidIndexError:重新索引仅对具有唯一值的索引对象有效

python - 如何创建多个一维轴,用彩色线条显示间隔?

python - 将 bool 值映射到字符串

python - 使 von Mises KDE 适应 Seaborn

python - 使用 pd.DataFrame 中的 MultiIndex 绘制数据