如何为多个子图制作一个图例?

新手上路,请多包涵

我正在绘制相同类型的信息,但针对不同的国家,使用 Matplotlib 绘制多个子图。也就是说,我在 3x3 网格上有九个图,所有的线都相同(当然,每条线的值不同)。

然而,我还没有想出如何在图中只放置一次图例(因为所有九个子图都有相同的线条)。

我怎么做?

原文由 pocketfullofcheese 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 399
2 个回答

还有一个很好的函数 get_legend_handles_labels() 你可以在最后一个轴上调用(如果你迭代它们)它会从 label= 参数中收集你需要的一切:

 handles, labels = ax.get_legend_handles_labels()
fig.legend(handles, labels, loc='upper center')

原文由 Ben Usman 发布,翻译遵循 CC BY-SA 3.0 许可协议

figlegend 可能是你要找的: _matplotlib.pyplot.figlegend_

_Figure legend demo_ 中有一个示例。

另一个例子:

 plt.figlegend(lines, labels, loc = 'lower center', ncol=5, labelspacing=0.)

要么:

 fig.legend(lines, labels, loc = (0.5, 0), ncol=5)

原文由 user707650 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题