在箱线图中显示平均值而不是中位数[关闭]


15

当使用python matplotblib绘制箱形图时,图中一半的线是分布的中位数。

是否有可能代替平均线。或者以其他样式将其绘制在其旁边。

另外,由于通常以中线为中位数,如果我将其设为平均值,会不会真的使我的读者感到困惑(当然,我会加注中间的线是什么)?

Answers:


25

此代码使箱形图然后放置一个圆圈,标记每个框的均值。您可以通过在调用中指定marker参数来使用其他符号scatter

import numpy as np
import pylab

# 3 boxes
data = [[np.random.rand(100)] for i in range(3)]
pylab.boxplot(data)

# mark the mean    
means = [np.mean(x) for x in data]
pylab.scatter([1, 2, 3], means)

替代文字


3
stackoverflow.com/questions/2492947/...的,使用R解决方案
詹姆斯

1
@James:我不是想成为一个混蛋,但要把您挑出来,但您的评论会向我提出一个问题。为什么在此论坛上的任何人明确询问如何使用非R语言(因为R 实际上是默认值)时,总是有人建议使用R?我发现相反情况并不多。SAS程序员通常不会对“如何在R中使用X?”发表评论。出现“在SAS中如何执行此操作...”的问题。我知道人们喜欢R(我也喜欢),但是……
Josh Hemann 2011年

20

要回答您的第二个问题:是的,我认为将线置于平均值而不是中位数会令人困惑。控制“晶须”(如果有)的长度和离群值的方法的精确规则各不相同,但是每个人都坚持使用Tukey的盒子来显示中位数,上下四分位数。对于高度偏斜的分布,均值可能在框,这看起来很奇怪。常见用法是中位数与四分位数范围相符,而平均值与标准差(如果您对推理而非数据描述感兴趣,则为平均值的标准误)。如果要在视觉上显示均值,我会使用其他符号来显示它以避免混淆。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.