0

サブプロットを使用していくつかの図を表示していますが、ラベルは最後のサブプロットと混在しているため、プロットのサイズが同じではありません。前の5つは完全に丸い円ではありません。ここでMatplotlibサブプロットのサイズが等しくない

は私のコードです:

for i in range(6): 
    plt.subplot(231 + i) 
    plt.title("Department " + depts[i]) 
    labels = ['Male', 'Female'] 
    colors = ['#3498DB', '#E74C3C'] 
    sizes = [male_accept_rates[i]/(male_accept_rates[i] + female_accept_rates[i]), 
      female_accept_rates[i]/(male_accept_rates[i] + female_accept_rates[i])] 
    patches, texts = plt.pie(sizes, colors=colors, startangle=90) 
plt.axis('equal') 
plt.tight_layout() 
plt.legend(labels, loc="best") 
plt.show() 

そして、ここでは出力です: piecharts

誰も私にいくつかのアドバイスを与えることができますか?とても有難い。

答えて

1

plt.axis('equal')は最後のサブプロットにのみ適用されます。だからあなたの修正はループ内にそのコード行を置くことです。

ので:

import numpy as np 
import matplotlib.pyplot as plt 

depts = 'abcdefg' 
male_accept_rates = np.array([ 2, 3, 2, 3, 4, 5], float) 
female_accept_rates= np.array([ 3, 3, 4, 3, 2, 4], float) 

for i in range(6): 
    plt.subplot(231 + i) 
    plt.title("Department " + depts[i]) 
    labels = ['Male', 'Female'] 
    colors = ['#3498DB', '#E74C3C'] 
    sizes = [male_accept_rates[i]/(male_accept_rates[i] + female_accept_rates[i]), 
      female_accept_rates[i]/(male_accept_rates[i] + female_accept_rates[i])] 
    patches, texts = plt.pie(sizes, colors=colors, startangle=90) 
    plt.axis('equal')                       
plt.tight_layout()                        
plt.legend(labels, loc="best")                     
plt.show() 

は今、これを生成します: enter image description here

+0

問題解決、ありがとうございました! –

+0

ちょうどフォローアップの質問をしたい、ラベルは最後のパイの上に横たわっている、これは私が望んでいないものです。別の場所にラベルを貼る方法はありますか?ありがとう。 –

+0

ええ、デフォルトでは、最新のサブプロットの凡例が描画されます。サブプロットセットの単一の凡例を取得するために、私はここを見ています:http://stackoverflow.com/questions/9834452/how-do-i-make-a-single-legend-for-many-subplots-with -matplotlib私はこれらのソリューションを試してみましたが、完全にはうまく動作しませんでしたが、私のバージョンのmatplotlibは少し異なります。彼らはあなたのために働くかもしれません。 –

関連する問題