我有一个包含三列的数据框
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 值。
答案 0 :(得分:1)
将数据重新整形为 long form,这样每一列是一个变量,每一行是一个观察值。在这种情况下,Dose1
和 Dose2
应该合并为一列,例如Section
。
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',
)