【发布时间】:2023-02-17 08:00:48
【问题描述】:
我有两个数据框,具有不同的形状。我想将小提琴图的两个数据框值绘制成彼此相邻而不是重叠。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data1 = {
'DT' : np.random.normal(-1, 1, 100),
'RF' : np.random.normal(-1, 1, 110),
'KNN' : np.random.normal(-1, 1, 120)
}
maxsize = max([a.size for a in data1.values()])
data_pad1 = {k:np.pad(v, pad_width=(0,maxsize-v.size,), mode='constant', constant_values=np.nan) for k,v in data1.items()}
df1 = pd.DataFrame(data_pad1) # data frame
data2 = {
'DT' : np.random.normal(-1, 1, 50),
'RF' : np.random.normal(-1, 1, 60),
'KNN' : np.random.normal(-1, 1, 80)
}
maxsize = max([a.size for a in data2.values()])
data_pad2 = {k:np.pad(v, pad_width=(0,maxsize-v.size,), mode='constant', constant_values=np.nan) for k,v in data2.items()}
df2 = pd.DataFrame(data_pad2) # dataframe2
#plotting
fig, ax = plt.subplots(figsize=(15, 6))
ax = sns.violinplot(data=df1, color="blue")
ax = sns.violinplot(data=df2, color="red")
plt.show()
这是我的输出图像。
但我想让每个蓝色和红色的小提琴图彼此相邻而不是重叠。我还想通过群图显示数据点。
【问题讨论】:
标签: python matplotlib seaborn violin-plot