pandas - 使用色调从seaborn 绘制多个箱线图

标签 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 值.

最佳答案

将数据 reshape 为 long form这样每一列都是一个变量,每一行都是一个观察值。在这种情况下,Dose1Dose2 应合并为一列,例如部分

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

关于pandas - 使用色调从seaborn 绘制多个箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68268835/

相关文章:

python - 有没有办法在 seaborn 点图中设置透明度/alpha 级别?

boxplot - 选择色调后,Seaborn boxplots 会更改(缩小)框的宽度,我该如何补救?

python - Matplotlib 动画箱线图

python - Plotly:如何绘制具有跨不同列的匹配行的 Sankey 图?

python - 在 Pandas : loc or join? 中加入数据帧的最有效方式

python - Pandas :日期时间的复杂条件

python - 从目录中读取 pandas 中的多个文件 csv 并将它们存储在列表数组中,每个文件作为一个观察

python - Seaborn KDEPlot - 数据变化不够?

python - 频率和百分比不均匀组 sns barplot

python - 如何将绘图在 xticks 上居中对齐