具有小值的 Pyplot 饼图错误
Pyplot pie chart bug with small values
我尝试在饼图上绘制一组小值,但得到以下结果:
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 笔记本的脚本)
这不是错误,而是预期的行为。来自 documentation:
Make a pie chart of array x. The fractional area of each wedge is given by x/sum(x). If sum(x) <= 1, then the values of x give the fractional area directly and the array will not be normalized.
看起来 pyplot.pie
没有为总和小于 1 的数组自动归一化数组的选项,所以如果你想填充饼图,我建议你自己归一化它们(或者只需将它们乘以某个数字即可确保总和为 > 1
,正如您已经发现的那样)。
我尝试在饼图上绘制一组小值,但得到以下结果:
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 笔记本的脚本)
这不是错误,而是预期的行为。来自 documentation:
Make a pie chart of array x. The fractional area of each wedge is given by x/sum(x). If sum(x) <= 1, then the values of x give the fractional area directly and the array will not be normalized.
看起来 pyplot.pie
没有为总和小于 1 的数组自动归一化数组的选项,所以如果你想填充饼图,我建议你自己归一化它们(或者只需将它们乘以某个数字即可确保总和为 > 1
,正如您已经发现的那样)。