使用色调绘制来自 seaborn 的多个箱线图

时间:2021-07-06 10:25:33

标签: pandas seaborn boxplot

我有一个包含三列的数据框

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 值。

1 个答案:

答案 0 :(得分:1)

将数据重新整形为 long form,这样每一列是一个变量,每一行是一个观察值。在这种情况下,Dose1Dose2 应该合并为一列,例如Section

melt()SickOrNot 作为标识符,Dose1Dose2 作为值的数据。然后将 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',
)

box plot after melting