使用matplotlib只有一个切片的饼图

时间:2016-10-26 15:23:32

标签: python matplotlib pie-chart

我试图在饼图中绘制压裂的值。饼图内部,我必须显示值0.我刚刚得到0,但输出中看不到饼图。不知道我哪里错了。任何帮助将不胜感激。

import matplotlib.pyplot as plt
fracs = [0]
plt.pie(fracs, colors = “b”, autopct=make_autopct(fracs),textprops={'fontsize' : '30', 'weight': 'bold'})
plt.title('Event Logs',fontsize = 30)

def make_autopct(values):
  def my_autopct(pct):
    total = sum(values)
    val = int(round(pct*total/100.0))
    return '{v:d}'.format(v=val)
  return my_autopct

1 个答案:

答案 0 :(得分:0)

你说你“必须显示值0”。你的代码正是如此。您的列表fracs包含列表中值与饼图圆周的相对贡献。列表中有一个值,值为0.该值对周长贡献0.0,即没有。这就是您的代码产生的:角度为0°的切片,显示为单行。

在你的第一条评论中,你说你“试图显示一个写有数字0的整个饼图”。这与显示值0非常不同。可以通过将列表fracs = [1]传递给plt.pie()来创建仅包含填充整个圆周的单个切片的完整饼图。这显示值1,而不是0。

但是,如果你真的,“真的”需要显示一个没有切片的饼图,并在其中写入0号“,根据你的最新评论,这段代码将为你做到:

fracs = [1]
plt.pie(fracs, 
        autopct=lambda x: "0.0", 
        colors="b", 
        textprops={'fontsize' : '30', 'weight': 'bold'})
plt.title('Event Logs',fontsize = 30)

但是,让我再说一遍:这不是显示值0的饼图。这是一个饼图,显示值1,其上印有标签“0.0” - 即使它显示的值为1.0。