Python 小提琴为两个数据帧的所有列绘制,小提琴的每一侧显示相同的列,但来自另一个数据帧
我有两个名为Python 小提琴为两个数据帧的所有列绘制,小提琴的每一侧显示相同的列,但来自另一个数据帧,python,pandas,matplotlib,seaborn,violin-plot,Python,Pandas,Matplotlib,Seaborn,Violin Plot,我有两个名为train\u df和test\u df的熊猫数据帧。它们都有名称相同的列,test_-df并没有像train_-df那样只有一列。现在我想绘制小提琴图,显示我的数据帧的每一列在图的每一行中的分布(如方框图);小提琴的每一侧代表相同的列,但来自不同的数据帧,以便比较两个数据帧中每列的分布。我如何做到这一点(最好是在matplotlib或seaborn中) 编辑1: 类似下面的图,但我希望每个小提琴显示每个列的分布,小提琴的每一侧显示每个数据帧中具有相同列的列的分布。除此之外,此图像仅
train\u df
和test\u df
的熊猫数据帧。它们都有名称相同的列,test_-df
并没有像train_-df
那样只有一列。现在我想绘制小提琴图,显示我的数据帧的每一列在图的每一行中的分布(如方框图);小提琴的每一侧代表相同的列,但来自不同的数据帧,以便比较两个数据帧中每列的分布。我如何做到这一点(最好是在matplotlib或seaborn中)
编辑1:类似下面的图,但我希望每个小提琴显示每个列的分布,小提琴的每一侧显示每个数据帧中具有相同列的列的分布。除此之外,此图像仅显示两列,并使用第三列作为颜色。
您必须将两个数据帧合并为一个数据帧,并用一列设置每行的原点:
#创建假数据
tips=sns.load\u数据集('tips')
train_df=tips.loc[tips['smoker']=='Yes']
test_df=tips.loc[tips['smoker']='No']
#连接两个数据帧
df=pd.concat([train_df.assign(orig='train'),test_df.assign(orig='test')],axis=0)
#密谋
ax=sns.violinplot(x=“day”,y=“total\u bill”,hue=“orig”,
数据=df,拆分=真)