选择色调时,Seaborn箱形图会更改(变窄)框的宽度,我该如何解决?

Nic*_*bel 5 boxplot seaborn

我正在使用seaborn创建箱线图。当我指定用于对框进行分组/着色的列时,框的宽度变得如此狭窄以至于很难看到。我所做的唯一更改是为hue指定了一个参数,该参数指向传递的数据框中的一列。我已经使用“宽度”参数(如所提到的试图在这里),它确实增加了盒形图的宽度,而且在它们被分开的距离。

帮助:如何在指定色相参数时保持框的宽度?

我将在下面显示我的代码和结果:

我的数据框:

Out[3]: 
                   timestamp   room_number floor       floor_room  temperature
0  2016-01-19 09:00:00-05:00         11a06    11         11_11a06          23.0
1  2016-01-19 09:00:00-05:00    east-inner    11    11_east-inner          22.8
2  2016-01-19 09:00:00-05:00   east-window    11   11_east-window          22.9
Run Code Online (Sandbox Code Playgroud)

使用seaborn和奇数箱线图宽度,并使用分组因子:

sns.boxplot(x=xunit, y=var, data=df, order=order, hue='floor')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

使用具有合适箱形图宽度但没有分组因子的seaborn:

sns.boxplot(x=xunit, y=var, data=df)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Nic*_*bel 5

事实证明“hue”参数导致了这个问题(我不知道为什么)。通过从函数中删除此参数/参数,问题就会消失,但您必须提供额外的信息,以便箱线图根据所需的条件进行颜色编码。以下代码行解决了我的问题:

sns.boxplot(x=xunit, y=var, data=df, order=order,palette=df[condition_column].map(palette_dir))
Run Code Online (Sandbox Code Playgroud)

其中,palette_dir 是每个条件的颜色字典,映射到数据列。

箱线图现在看起来很正常,但我正在努力添加图形图例。我希望在这篇文章中解决这个问题的人能给我指出他们的方法。


小智 5

在 0.8 版本(2017 年 7 月)中,dodge添加了该参数

boxplotviolinplotbarplot允许在hue不更改绘图元素的位置或宽度的情况下使用,就像hue变量未嵌套在主分类变量中一样。

(发行说明 v0.8.0 )

您的代码如下所示:

sns.boxplot(x=xunit, y=var, data=df, order=order, hue='floor', dodge=False)