我使用以下代码创建了7个图。我希望所有7个地块都有一个共同的图例,最好是在右上角。对于绿色区域,图例应为“发送数据”,对于红色区域,它应为“不发送数据”。我尝试使用figlegend但无法实现它。任何帮助将不胜感激。
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')
答案 0 :(得分: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()
这会生成以下图表: