如何在 Python matplotlib 子图中显示图例
Posted
技术标签:
【中文标题】如何在 Python matplotlib 子图中显示图例【英文标题】:How to display legend in Python matplotlib subplots 【发布时间】:2021-03-27 11:17:23 【问题描述】:我正在绘制 4 条曲线,如下所示。在每个子图中,我想要一个带有标签的图例,只是变量名。例如,对于由 axs[0,0] 定义的子图,图例应为“y1”和“y2”,(自然与各自的线条颜色)。 我尝试了下面的代码,但没有显示图例。
fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x,One_year[['y1','y2']])
axs[0, 1].plot(x,One_year[['z1','z2']])
axs[0, 2].plot(x,One_year[['m1','m2']])
axs[1, 0].plot(x,One_year[['p1','p2']])
fig.autofmt_xdate()
plt.legend()
plt.show()
【问题讨论】:
【参考方案1】:您需要在绘图时提供label
关键字参数,并调用legend
方法在子图上绘制图例
fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x,One_year[['y1','y2']], label= "y1 and y2")
axs[0, 0].legend()
axs[0, 1].plot(x,One_year[['z1','z2']], label= "z1 and z2")
axs[0, 1].legend()
# indexing was wrong here(in the posted code)
# axs is a 2x2 matrix
axs[1, 0].plot(x,One_year[['m1','m2']], label= "m1 and m2")
axs[1, 0].legend()
axs[1, 1].plot(x,One_year[['p1','p2']], label= "p1 and p2")
axs[1, 1].legend()
fig.autofmt_xdate()
# plt.legend()
plt.show()
编辑:我用一些随机数据进行了测试,这很有效。你有什么错误吗?
【讨论】:
以上是关于如何在 Python matplotlib 子图中显示图例的主要内容,如果未能解决你的问题,请参考以下文章
python使用matplotlib可视化subplots绘制子图自定义几行几列子图,如果M行N列,那么最终包含M*N个子图在指定的子图中添加可视化结果