我想比较一组分数分布(score),按某些类别(centrality)分组,按其他类别(model)着色。我尝试过以下几种方法:
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")我在这个情节上有一些问题:
model值original是特殊的,因为所有其他发行版都应该与original的分布进行比较。这应该在情节中直观地反映出来。我能让original成为每个组的第一个盒子吗?我能用不同的方式来抵消或标记它吗?是否有可能通过每个original分布的中值并通过一组框画一条水平线?score的一些值非常小,如何对y轴进行适当的缩放来显示它们呢?

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

发布于 2016-02-01 14:33:51
离群点显示
您应该能够将可以传递给seaborn.boxplot的任何参数传递给plt.boxplot (参见文档),这样就可以通过设置flierprops来调整异常值的显示。这里是一些你可以处理异常值的例子。
如果你不想显示它们,你可以
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
showfliers=False)或者你可以像这样把它们变成浅灰色:
flierprops = dict(markerfacecolor='0.75', markersize=5,
linestyle='none')
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
flierprops=flierprops)群的阶
您可以使用hue_order手动设置组的顺序。
seaborn.boxplot(x="centrality", y="score", hue="model", data=data,
hue_order=["original", "Havel..","etc"])Y轴的标度
您可以得到所有y-值的最小值和最大值,并相应地设置y_lim?就像这样:
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范围将包括所有的值,但我留下它只是一个如何调整这些设置的例子。正如注释中提到的,日志缩放可能更有意义。
发布于 2021-01-10 17:06:54
自从这个答案有活动以来已经有一段时间了,但是我会回答OP的问题,对于任何将来需要帮助的人来说,这个奇怪的下界。
一旦将y轴设置为对数比例,就不可能表示y=0,因为log(0)趋向于-inf。
因此,当你的盒子下面的部分的数值是零或者非常接近它的时候,盒子看起来就像是“切成两半”。
不用说,用对数尺度表示负y值也是不可能的。
https://stackoverflow.com/questions/35131798
复制相似问题