2016-07-18 7 views
2

私は7つのpi-chartsを持っています(4つは以下にリストされています)。私は最初の行の4つの円グラフと2番目の行の3つの円グラフでダッシュボードを作成しようとしています。下のコードでどこが間違っているのかわかりません。これを達成する他の選択肢はありますか?どんな助けもありがとう。matplotlibサブプロットを使用した円グラフの配置

from matplotlib import pyplot as PLT 
fig = PLT.figure() 
ax1 = fig.add_subplot(221) 
line1 = plt.pie(df_14,colors=("g","r")) 
plt.title('EventLogs') 
ax1 = fig.add_subplot(223) 
line2 = plt.pie(df_24,colors=("g","r")) 
plt.title('InstalledApp') 
ax1 = fig.add_subplot(222) 
line3 = plt.pie(df_34,colors=("g","r")) 
plt.title('Drive') 
ax1 = fig.add_subplot(224) 
line4 = plt.pie(df_44,colors=("g","r")) 
plt.title('SQL Job') 
ax1 = fig.add_subplot(321) 
line5 = plt.pie(df_54,colors=("g","r")) 
plt.title('Administrators') 
ax2 = fig.add_subplot(212) 
PLT.show() 

答えて

1

私はいつも使用して、AT-少なくとも私にとっては、より直感的で、より良い方法は、subplot2gridを使用することです....

fig = plt.figure(figsize=(18,10), dpi=1600) 
#this line will produce a figure which has 2 row 
#and 4 columns 
#(0, 0) specifies the left upper coordinate of your plot 
ax1 = plt.subplot2grid((2,4),(0,0)) 
plt.pie(df_14,colors=("g","r")) 
plt.title('EventLogs') 
#next one 
ax1 = plt.subplot2grid((2, 4), (0, 1)) 
plt.pie(df_24,colors=("g","r")) 
plt.title('InstalledApp') 

そして、あなたはこのように上に行くことができ、そしてとき行を切り替えるには、座標を(1、0)...と書いてください。これは2行目の最初の列です。 2行と2つのcolsので

例 -

fig = plt.figure(figsize=(18,10), dpi=1600) 
#2 rows 2 cols 
#first row, first col 
ax1 = plt.subplot2grid((2,2),(0,0)) 
plt.pie(df.a,colors=("g","r")) 
plt.title('EventLogs') 
#first row sec col 
ax1 = plt.subplot2grid((2,2), (0, 1)) 
plt.pie(df.a,colors=("g","r")) 
plt.title('EventLog_2') 
#Second row first column 
ax1 = plt.subplot2grid((2,2), (1, 0)) 
plt.pie(df.a,colors=("g","r")) 
plt.title('InstalledApp') 
#second row second column 
ax1 = plt.subplot2grid((2,2), (1, 1)) 
plt.pie(df.a,colors=("g","r")) 
plt.title('InstalledApp_2') 

enter image description here

は、この情報がお役に立てば幸い!

+0

ありがとう、それは完璧に動作します。 7つのプロット全てに対して共通の伝説を設定する方法はありますか?たとえば、赤は「健康でない」、緑は「健康」などとします。 – user3447653

+0

あなたは 'figlegend'を探していますが、それぞれのプロットには独自の軸があるため、' legend'で直接行うことはできません。それとも、1つのプロットのために伝説を置くのはなぜですか? – hashcode55

+0

私はこれを試しましたが、期待通りに動作しませんでした:lgd = plt.legend((ライン1)、( 'Helathy'、 'Not Healthy')、loc = '右上') – user3447653

関連する問題