2016-10-26 3 views
0

円グラフの内側にfracsの値をプロットしようとしています。円グラフの内部では、値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」のインデントが壊れていると思います。とにかく、それが修正されていれば、私はあなたのコードを想定した出力を得ます:1つのセグメントが0の小数部を示す円グラフ、つまり角度が0°のセグメント。それは望ましい出力ではないですか? – Schmuddi

答えて

0

「値0を表示する必要がある」と言います。あなたのコードはまさにそれを行います。あなたのリストfracsには、円グラフの円周に対するリストの値の相対的な寄与が含まれます。リストには1つの値、0があります。この値は、円周に0.0、つまり何も寄与しません。そして、これはあなたのコードが生成するものです:角度が0°のスライスで、1つの線として表示されます。

最初のコメントでは、「数字0の円グラフ全体を表示しようとしています」と言います。これは値0を表示することとは非常に異なります。リストをfracs = [1]plt.pie()に渡すことによって、全周を塗りつぶす1つのスライスのみからなる全円グラフを作成することができます。これは、0ではなく1の値を示します。

しかし、あなたの最新のコメントによると、実際には、本当に「内部にはスライスのない円グラフを表示し、数字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

関連する問題