Pyplot饼图bug与小值

时间:2015-10-09 10:31:56

标签: python matplotlib pie-chart

我尝试在饼图上绘制一个小值数组,但我得到以下结果:

values = [0.077, 0.028, 0.006, 0.149, 0.081]

fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(111)
ax.pie(values, startangle=90)
plt.show()

Bug

但是,我只需要将这些值乘以10即可得到正确的结果:

values = [v*10 for v in values]

Normal

知道为什么会这样,以及如何解决它?

(注意:我正在使用Python 2.7,matplotlib 1.4.3,我正在从IPython笔记本运行脚本)

1 个答案:

答案 0 :(得分:2)

这不是错误,而是预期的行为。来自documentation

  

制作数组x的饼图。每个楔形的分数面积由x / sum(x)给出。 如果sum(x)< = 1,则x的值直接给出小数区域,并且数组不会被标准化。

看起来pyplot.pie有一个选项可以自动规范化数组,并且总和小于1的数组,所以如果你想填充饼图,我建议你自己规范化它们(或者只是乘法他们用一些数字来确保总和是> 1,正如你已经发现的那样。)