Python使用matplotlib绘制子图时如何添加label与独立legend?
解决方案
你当前代码中调用全局的plt.legend()只会作用在最后激活的子图上,要实现每个子图显示独立图例,只需分别调用每个子图对象自身的legend()方法即可,修改后的代码如下:
import matplotlib.pyplot as plt s=range(1,6) a=[1,2,3,4,5] b=[1,4,9,16,25] c=a d=b fig = plt.figure() gs = fig.add_gridspec(2, hspace=0) axs = gs.subplots(sharex=True, sharey=True) axs[0].step(s, a,label="Male") axs[0].step(s, b, label="Female") axs[1].step(s,c, label="$Age\leq 35$") axs[1].step(s, d, label="$Age>35$") # 分别为两个子图添加独立图例 axs[0].legend() axs[1].legend() plt.show()
可选优化
如果图例遮挡了绘图数据,可以指定loc参数调整位置,示例:
- 放置在左上角:
axs[0].legend(loc='upper left') - 放置在图外侧避免遮挡:
axs[0].legend(bbox_to_anchor=(1.02, 1), loc='upper left')
内容的提问来源于stack exchange,提问作者Reza
相关产品推荐
相关产品推荐

