2016-10-26 28 views
0

我想要绘制饼图内压裂的值。在饼图内部,我必须显示值0.我刚收到0,但饼图在输出中不可见。不知道我哪里错了。任何帮助,将不胜感激。使用matplotlib只使用单个切片的饼图

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 
+0

什么是''make_autopct''? – Schmuddi

+0

@Schmuddi:对不起,提供了定义 – user3447653

+0

我认为''make_autopct''的缩进被打破了。无论如何,如果这是固定的,我会得到您想要的代码的输出结果:一个饼图,其中一个段显示零点,即角度为0°的段。这是不是所需的输出? – Schmuddi

回答

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。

+0

这是我试图找出。谢谢。 – user3447653