当选择色调时,Seaborn箱图会改变(缩小)盒子的宽度,我该如何解决这个问题?

时间:2016-03-18 19:00:10

标签: boxplot seaborn

我正在使用seaborn来创建一个箱形图。当我指定用于对框进行分组/着色的列时,框的宽度变得非常窄以至于难以看到。我正在做的唯一改变是为hue指定一个参数,它指向传递的数据帧中的一列。我尝试过使用' width'参数(如提到here),它确实增加了箱图的宽度,但也增加了它们分开的距离。

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

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

我的数据框:

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

使用具有奇数箱图宽度的seaborn,使用分组因子:

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

enter image description here

使用具有合理箱线宽度但没有分组因子的海鸟:

sns.boxplot(x=xunit, y=var, data=df)

enter image description here

2 个答案:

答案 0 :(得分:4)

结果是' hue'参数导致问题(我不知道为什么)。通过从函数中删除此参数/参数,问题就会消失,但您必须提供额外信息,以便根据所需条件对箱图进行颜色编码。以下代码行修复了我的问题:

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

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

箱形图现在看起来很正常,但我正在努力添加一个图形传奇。我希望解决这个问题的人in this post可以指出我的方法。

答案 1 :(得分:4)

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

  

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

release notes v0.8.0

您的代码如下所示:

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