小提琴为两个数据帧的所有列绘制,小提琴的每一侧显示相同的列,但来自另一个数据帧

2024-04-25 08:55:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个名为train_dftest_df的数据帧。它们都有名称相同的列,并且test_df没有train_df只有一个列。现在我想绘制小提琴图,显示我的数据帧的每一列在图的每一行中的分布(如方框图);小提琴的每一侧代表相同的列,但来自不同的数据帧,以便比较两个数据帧中每列的分布。我如何做到这一点(最好是在matplotlib或seaborn中)

编辑1:
类似下面的图,但我希望每个小提琴显示每个列的分布,小提琴的每一侧显示每个数据帧中具有相同列的列的分布。除此之外,此图像仅显示两列,并使用第三列作为颜色。 enter image description here


Tags: 数据test图像名称编辑dfmatplotlib颜色
1条回答
网友
1楼 · 发布于 2024-04-25 08:55:01

您必须将两个数据帧合并为一个数据帧,并用一列设置每行的原点:

# create fake data
tips = sns.load_dataset('tips')
train_df = tips.loc[tips['smoker']=='Yes']
test_df = tips.loc[tips['smoker']=='No']

# concatenate both dataframe
df = pd.concat([train_df.assign(orig='train'), test_df.assign(orig='test')], axis=0)

# plot
ax = sns.violinplot(x="day", y="total_bill", hue="orig",
                    data=df, split=True)

相关问题 更多 >

    热门问题