Python 子地块中的Matplotlib图例

Python 子地块中的Matplotlib图例,python,matplotlib,Python,Matplotlib,我想在下面的每个子图中添加图例。 我试过plt.legend,但没用 有什么建议吗 提前感谢:-) 根据atomh33ls的建议: ax1.legend("HHZ 1",loc="upper right") ax2.legend("HHN",loc="upper right") ax3.legend("HHE",loc="upper right") 图例位置是固定的,但是字符串似乎有问题,因为每个字母都放在新行中 有人知道怎么修吗 这应该可以: ax1.plot(xtr, color='r'

我想在下面的每个子图中添加图例。 我试过plt.legend,但没用

有什么建议吗

提前感谢:-)

根据atomh33ls的建议:

ax1.legend("HHZ 1",loc="upper right")
ax2.legend("HHN",loc="upper right")
ax3.legend("HHE",loc="upper right")
图例位置是固定的,但是字符串似乎有问题,因为每个字母都放在新行中

有人知道怎么修吗

这应该可以:

ax1.plot(xtr, color='r', label='HHZ 1')
ax1.legend(loc="upper right")
ax2.plot(xtr, color='r', label='HHN')
ax2.legend(loc="upper right")
ax3.plot(xtr, color='r', label='HHE')
ax3.legend(loc="upper right")

您想要的操作无法完成,因为
plt.legend()
在当前轴中放置了一个图例,在您的最后一个轴中就是这样

另一方面,如果您满足于在最后一个子图中放置一个全面的图例,那么您可以这样做

f, (ax1, ax2, ax3) = plt.subplots(3, sharex=True, sharey=True)
l1,=ax1.plot(x,y, color='r', label='Blue stars')
l2,=ax2.plot(x,y, color='g')
l3,=ax3.plot(x,y, color='b')
ax1.set_title('2012/09/15')
plt.legend([l1, l2, l3],["HHZ 1", "HHN", "HHE"])
plt.show()

请注意,传递给
图例的不是示例代码中的轴,而是
绘图
调用返回的行

附言
当然,您可以在每个子批次之后调用
图例
,但据我所知,您已经知道了这一点,并且正在寻找一种方法来立即执行此操作。

这满足了您的需要,并克服了其他答案中的一些问题:

导入matplotlib.pyplot作为plt
标签=[“HHZ 1”、“HHN”、“HHE”]
颜色=[“r”、“g”、“b”]
f、 axs=plt.子批(3,sharex=True,sharey=True)
#----绕轴循环----
对于i,枚举中的ax(axs):
axs[i].绘图([0,1],[1,0],颜色=颜色[i],标签=标签[i])
axs[i]。图例(loc=“右上”)
plt.show()
。。。生产。。。

是的,它将图例放置在正确的位置。谢谢唯一的问题是,它把每个字母放在一行。您知道如何避免这种情况吗?对于字符串问题:尝试在
plot()
命令中使用label关键字。当字符串成为它们各自的字母时,这是因为Python将字符串视为字母序列。如果您需要告诉Python一个字符串是一个不应该被破坏的字符串,您可以将它放入一个元素列表
[“HHZ”]
或元组
(“HHZ”)
,但我可以确认,在最后一个绘图中,图例位置的关键是
sharex=True
sharey=True
?如何将这个综合图例放在图的底部?
f, (ax1, ax2, ax3) = plt.subplots(3, sharex=True, sharey=True)
l1,=ax1.plot(x,y, color='r', label='Blue stars')
l2,=ax2.plot(x,y, color='g')
l3,=ax3.plot(x,y, color='b')
ax1.set_title('2012/09/15')
plt.legend([l1, l2, l3],["HHZ 1", "HHN", "HHE"])
plt.show()