使用matplotlib的所有饼图的通用图例

2024-05-01 14:46:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我用下面的代码创建了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')

enter image description here


Tags: 代码区域绘图dftitleplt发送数据colors
1条回答
网友
1楼 · 发布于 2024-05-01 14:46:00

图例只需调用一次,否则将显示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

相关问题 更多 >