我想使用boxplot
绘制matplotlib
数字。
这是生成图形的代码:
pt = plt.boxplot(all_data, sym='+')
plt.yticks([0, 0.2, 0.4, 0.6, 0.8, 1.0], ['0', '20%', '40%', '60%', '80%', '100%'])
plt.xticks([y + 1 for y in range(len(all_data))], ['WMC', 'DIT', 'CBO', 'RFC', 'LCOM', 'Ca', 'NPM'])
mean = []
for line in pt['medians']:
x, y = line.get_xydata()[1] # top of median line
plt.text(x, y, '%.1f' % x,
horizontalalignment='center') # draw above, centered
plt.savefig("boxplot1.pdf")
箱线图中的框显示数据集的第1,第2和第3四分位数(Q1,中位数和Q3)。对于每个盒子,有一条线(也称为晶须,默认长度为1.5 * IQR(四分位间距))。基本上我正在寻找的不是使用默认值,而是明确设置下限和上限(或胡须长度)到我指定的某个值。
有人可以对此有所了解吗?
答案 0 :(得分:1)
要更改箱线图的胡须,请使用whis
argument of boxplot。
whis
:浮点数,序列或字符串(默认=1.5
)
作为浮子,确定胡须的距离超出第一和第三四分位数。换句话说,在IQR是四分位数范围(Q3-Q1
)的情况下,上部晶须将延伸到小于Q3 + whis*IQR
的最后一个数据。类似地,下部晶须将延伸到大于Q1 - whis*IQR
的第一个数据。除了晶须之外,数据被视为异常值并被绘制为单个点。将其设置为不合理的高值,以强制晶须显示最小值和最大值。或者,将其设置为百分位数的递增序列(例如,[5, 95]
)以将胡须设置在数据的特定百分位数处。最后,whis可以是字符串'范围'强迫胡须达到数据的最小值和最大值。