我有一个包含三列的数据帧
df=pd.DataFrame(data = {'Dose1': [1,2,3,4,5], 'Dose2': [6,6,4,7,4],'SickOrNot':[True,False,True,True,False]})
最后一列对应于患者是否生病,前两列是给患者服用的两种药物的剂量。我想创建两对剂量的箱形图(在海上),使用患者是否生病作为色调。
所以,本质上,我希望x轴有两个部分(剂量1,剂量2),每个部分包含两个盒子图。所以我的最后四个盒子图是病人的剂量1,非病人的剂量1,病人的剂量2,非病人的剂量2。
我会用什么语法来做这件事?我曾尝试将色调设置为“有病或无病”,但在调用sns.boxplot
时,我对如何设置x和y值感到非常困惑。
发布于 2021-07-06 10:32:53
将数据重塑为long form,这样每列都是一个变量,每行都是一个观察值。在这种情况下,应该将Dose1
和Dose2
合并为一列,例如Section
。
使用SickOrNot
作为标识符,使用Dose1
和Dose2
作为值,对数据执行melt()
操作。然后将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',
)
https://stackoverflow.com/questions/68268835
复制