我在for循环中绘制了一系列的图:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,1, 100)
y = np.sin(x)
for i in range(1,6):
plt.plot(x, i*y, label=f't= {i}')
plt.plot(x[::2], i*y[::2], marker='o', linestyle='None', markersize=2,label=f'a= {i}')
plt.legend(loc='best', ncol=2)
输出为:
我希望图例为:
如何访问图例并使其如上图所示?
1条答案
按热度按时间bis0qfac1#
如果你不给予
legend
额外的参数,它会把艺术家按照他们被创建的顺序放在图例中,并按容器排序(但这里你不关心,因为你只有属于ax.lines
的艺术家)。你应该手动排序句柄以得到你想要的结果,然后把它给legend
。这很简单:
请注意,我们有几种排序艺术家的解决方案。在这里,我们可以遵循线标签中的模式,或者只是它们的标记类型。
在我看来,这是一个干净的面向对象的解决方案。对于一个修改代码更少的解决方案,您可以这样做: