我尝试在饼图上绘制一个小值数组,但我得到以下结果:
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()
但是,我只需要将这些值乘以10即可得到正确的结果:
values = [v*10 for v in values]
知道为什么会这样,以及如何解决它?
(注意:我正在使用Python 2.7,matplotlib 1.4.3,我正在从IPython笔记本运行脚本)
答案 0 :(得分:2)
这不是错误,而是预期的行为。来自documentation:
制作数组x的饼图。每个楔形的分数面积由x / sum(x)给出。 如果sum(x)< = 1,则x的值直接给出小数区域,并且数组不会被标准化。
看起来pyplot.pie
有一个选项可以自动规范化数组,并且总和小于1的数组,所以如果你想填充饼图,我建议你自己规范化它们(或者只是乘法他们用一些数字来确保总和是> 1
,正如你已经发现的那样。)