我使用一个plot
调用通过绘制几条曲线来创建一个网格,如下所示:
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
x = np.array([[0,1], [0,1], [0,1]])
y = np.array([[0,0], [1,1], [2,2]])
ax.plot([0,1],[0,2], label='foo', color='b')
ax.plot(x.T, y.T, label='bar', color='k')
ax.legend()
plt.show()
得到的图例有多少条曲线就有多少条“bar”(见下文)。我希望每个plot
调用只有一个图例条目(在本例中只有一个时间“bar”)。
我希望这样我可以有其他绘图命令(例如绘制'foo'曲线的命令),如果它们有标签的话,它们的曲线会 * 自动 * 包含在图例中。我特别希望在构建图例时避免手动选择句柄,而是使用matplotlib的特性来处理这个问题,即在绘图时是否包含标签。我该如何实现这一点?
3条答案
按热度按时间dfddblmv1#
以下是一个可能的解决方案:您可以利用底缐不会产生图例项目的事实。因此,将第一个标签以外的所有标签设定为
"_"
,会抑制这些项目出现在图例中。pexxcrt22#
以下是使用现有图例句柄和标签的一种方法。您首先获得三个
handles, labels
,然后只显示第一个。这样另外您不仅可以控制放置句柄的顺序,还可以控制**在图上显示什么。替代方法,其中图例仅取自特定地块(一组线)--在本例中为
ax1
把它延伸到你的问题,两个数字
另一个使用for循环的替代方法是@SpghttCd建议的
vuktfyat3#
也许不太优雅,但最简单和最直接的方法是使用一对元素在您指定的'标签'您想要的第二个绘图!