我有一个包含三列的数据框
df=pd.DataFrame(data = {'Dose1': [1,2,3,4,5], 'Dose2': [6,6,4,7,4],'SickOrNot':[True,False,True,True,False]})
最后一列对应于患者是否生病,前两列是给予患者的两种药物的剂量。我想创建两对剂量箱线图(在seaborn中),使用患者是否生病作为色调。
所以,本质上,我希望 x 轴有两个部分(剂量 1、剂量 2),每个部分包含两个箱线图。因此,我的最后四个箱线图是患病患者的剂量 1、非患病患者的剂量 1、患病患者的剂量 2、非患病患者的剂量 2。
我将使用什么语法来执行此操作?我尝试将色调设置为“是否有病”,但我很困惑在调用 sns.boxplot
时应设置什么作为我的 x 和 y 值.
最佳答案
将数据 reshape 为 long form这样每一列都是一个变量,每一行都是一个观察值。在这种情况下,Dose1
和 Dose2
应合并为一列,例如部分
。
melt()
以 SickOrNot
作为标识符,以 Dose1
和 Dose2
作为值的数据。然后将 SickOrNot
设置为绘图的 hue
:
sns.boxplot(
data=df.melt(id_vars=['SickOrNot'], value_vars=['Dose1', 'Dose2'],
var_name='Section', value_name='Dosage'),
x='Section',
y='Dosage',
hue='SickOrNot',
)
关于pandas - 使用色调从seaborn 绘制多个箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68268835/