2016-07-18 71 views
0

我使用下面的代碼創建了7個圖。我想爲所有7個地塊都有一個共同的傳說,最好在右上角。對於綠色區域,圖例應該是'發送數據',紅色區域應該是'不發送數據'。我嘗試使用figlegend,但無法實現它。任何幫助,將不勝感激。所有使用matplotlib的餅圖的常見圖例

fig = plt.figure(figsize=(18,10), dpi=1600) 
ax1 = plt.subplot2grid((2,4),(0,0)) 
plt.pie(df_14,colors=("g","r")) 
plt.title('LOGS1') 
ax2 = plt.subplot2grid((2, 4), (0, 1)) 
plt.pie(df_24,colors=("g","r")) 
plt.title('LOGS2') 
ax3 = plt.subplot2grid((2, 4), (0, 2)) 
plt.pie(df_34,colors=("g","r")) 
plt.title('LOGS3') 
ax4 = plt.subplot2grid((2, 4), (0, 3)) 
plt.pie(df_44,colors=("g","r")) 
plt.title('LOGS4') 
ax5 = plt.subplot2grid((2, 4), (1, 0)) 
plt.pie(df_54,colors=("g","r")) 
plt.title('LOGS5') 
ax6 = plt.subplot2grid((2, 4), (1, 1)) 
plt.pie(df_64,colors=("g","r")) 
plt.title('LOGS6') 
ax7 = plt.subplot2grid((2, 4), (1, 2)) 
line7 = plt.pie(df_74,colors=("g","r")) 
plt.title('LOGS7') 

enter image description here

回答

2

傳說只需要調用一次,否則你會得到7周不同的傳說顯示。下面給出了一個例子。請注意,您在您自己的數據替換成ax.pie()

data1 = (10,90) # some data to be plotted 
data2 = (40,50) 
data3 = (70,30) 

labels = ['Sending Data', 'Not Sending Data'] #legend labels to be plotted 
colors = ['green', 'red'] 

fig = plt.figure(figsize=(16,8)) 

ax1 = plt.subplot2grid((2,4),(0,0)) 
ax1.pie(data1, colors=colors, startangle=90) 
plt.title('LOGS1') 

ax2 = plt.subplot2grid((2, 4), (0, 1)) 
ax2.pie(data2, colors=colors, startangle=90) 
plt.title('LOGS2') 

ax3 = plt.subplot2grid((2, 4), (0, 2)) 
ax3.pie(data3, colors=colors, startangle=90) 
plt.title('LOGS3') 

ax4 = plt.subplot2grid((2, 4), (0, 3)) 
ax4.pie(data1, colors=colors, startangle=90) 
plt.title('LOGS4') 

ax5 = plt.subplot2grid((2, 4), (1, 0)) 
ax5.pie(data2, colors=colors, startangle=90) 
plt.title('LOGS5') 

ax6 = plt.subplot2grid((2, 4), (1, 1)) 
ax6.pie(data3, colors=colors, startangle=90) 
plt.title('LOGS6') 

ax7 = plt.subplot2grid((2, 4), (1, 2)) 
patches, texts = ax7.pie(data1, colors=colors, startangle=90) #use this plot to show the legend 
plt.title('LOGS7') 
plt.legend(patches, labels, bbox_to_anchor=(2.3, 2), prop={'size':14}) #show the legend defined in labels 
#change values of 'bbox_to_anchor' to move the legend to the desired location 

plt.axis('equal') # Set aspect ratio to be equal so that pie is drawn as a circle. 
plt.tight_layout() 
plt.subplots_adjust(right=0.94) #adjust the spacing on right to see legend clearly 
plt.show() 

這將產生以下圖表:

enter image description here