首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微调seaborn.boxplot

微调seaborn.boxplot
EN

Stack Overflow用户
提问于 2016-02-01 13:30:30
回答 2查看 65.7K关注 0票数 41

我想比较一组分数分布(score),按某些类别(centrality)分组,按其他类别(model)着色。我尝试过以下几种方法:

代码语言:javascript
复制
plt.figure(figsize=(14,6))
seaborn.boxplot(x="centrality", y="score", hue="model", data=data, palette=seaborn.color_palette("husl", len(models) +1))
seaborn.despine(offset=10, trim=True)
plt.savefig("/home/i11/staudt/Eval/properties-replication-test.pdf", bbox_inches="tight")

我在这个情节上有一些问题:

  • 有大量的离群点,我不喜欢他们是怎么画在这里的。我能把它们移走吗?我能改变外观以减少杂乱吗?我可以至少给它们涂上颜色,使它们的颜色与盒子颜色相匹配吗?
  • modeloriginal是特殊的,因为所有其他发行版都应该与original的分布进行比较。这应该在情节中直观地反映出来。我能让original成为每个组的第一个盒子吗?我能用不同的方式来抵消或标记它吗?是否有可能通过每个original分布的中值并通过一组框画一条水平线?
  • score的一些值非常小,如何对y轴进行适当的缩放来显示它们呢?

编辑:

这里有一个例子,它的圆柱形y轴也还不理想.为什么有些盒子在低端似乎被切断了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-01 14:33:51

离群点显示

您应该能够将可以传递给seaborn.boxplot的任何参数传递给plt.boxplot (参见文档),这样就可以通过设置flierprops来调整异常值的显示。这里是一些你可以处理异常值的例子。

如果你不想显示它们,你可以

代码语言:javascript
复制
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
                showfliers=False)

或者你可以像这样把它们变成浅灰色:

代码语言:javascript
复制
flierprops = dict(markerfacecolor='0.75', markersize=5,
              linestyle='none')
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
                flierprops=flierprops)

群的

您可以使用hue_order手动设置组的顺序。

代码语言:javascript
复制
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
                hue_order=["original", "Havel..","etc"])

Y轴的标度

您可以得到所有y-值的最小值和最大值,并相应地设置y_lim?就像这样:

代码语言:javascript
复制
y_values = data["scores"].values
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
                y_lim=(np.min(y_values),np.max(y_values)))

编辑:这最后一点没有真正的意义,因为自动y_lim范围将包括所有的值,但我留下它只是一个如何调整这些设置的例子。正如注释中提到的,日志缩放可能更有意义。

票数 77
EN

Stack Overflow用户

发布于 2021-01-10 17:06:54

自从这个答案有活动以来已经有一段时间了,但是我会回答OP的问题,对于任何将来需要帮助的人来说,这个奇怪的下界。

一旦将y轴设置为对数比例,就不可能表示y=0,因为log(0)趋向于-inf。

因此,当你的盒子下面的部分的数值是零或者非常接近它的时候,盒子看起来就像是“切成两半”。

不用说,用对数尺度表示负y值也是不可能的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35131798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档