【发布时间】:2020-10-06 19:16:37
【问题描述】:
我想在带有 seaborn 的条形图上重叠一个 swarmplot。 让我们生成我的数据(3 个条件,每个条件 3 个重复,在 3 个时间点):
condition_list = []
experiment_list = []
day_list = []
result_list = []
for condition in ['A', 'B', 'C']:
for experiment in range(1,4):
for day in range(1,4):
condition_list.append(condition)
experiment_list.append(experiment)
day_list.append(day)
result_list.append(random.random())
datas = list(zip(condition_list,experiment_list,day_list,result_list))
df = pd.DataFrame(data=datas, columns=['Condition','Experiment','Day','Result'])
我对条形图很好:
sns.catplot(x="Condition", y="Result", hue='Day', data=df, kind="bar", ci='sd')
但是如果我想在这个图上添加相应的值作为点,它们都在同一个横坐标上对齐:
sns.catplot(x="Condition", y="Result", hue='Day', data=df, kind="bar", ci='sd')
sns.swarmplot(x="Condition", y="Result", hue='Day', data=df)
这是我的问题!对于每个条形图,我想将三个对应的值绘制为点。
例如,如果我们限制第一天的数据,我可以在同一张图上绘制条形和点:
new_df = df[df['Day'] == 1].reset_index(drop=True)
sns.barplot(x="Condition", y="Result", data=new_df, ci="sd")
sns.swarmplot(x="Condition", y="Result", color='black',data=new_df, zorder=10)
是否可以在 seaborn 的第一个人物上做同样的事情? 非常感谢您的帮助 ^^
【问题讨论】:
-
你试过
sns.swarmplot(..., dodge=True)吗? swarmplot docs and examples
标签: python pandas matplotlib plot seaborn