我需要在Matplotlib轴ax
上执行多个绘图操作。数据在pandas DataFrame中,因此很自然地使用多个绘图命令:
df.plot(..., ax=ax)
字符串
但对于其中的一些,我不希望在图例中有标签条目。我尝试添加label="_nolegend_"
,但不起作用。
我发现的唯一解决方法是首先从DataFrame中提取数据,然后使用单独的ax.plot
命令在循环中绘制它们,在图例中我想要的地方添加label
参数。这是乏味的。
注意:我不是在问如何完全删除图例。
编辑:在@Vitalizzare发布了他的好答案之后(谢谢!):当然,我试过了,因为它在文档中,但它不工作在我的情况下。不容易理解为什么,但我认为这与绘制的曲线数量有关。请考虑以下代码:
dg = pd.DataFrame(data=np.random.rand(400).reshape(10,40))
fig1, ax = plt.subplots(figsize=(12, 4))
dg.iloc[1:8].plot(ax=ax,style='.-',color='lightgray',legend=False)
dg[[32,33]].iloc[1:8].plot(ax=ax)
型
这里发生了一些非常奇怪的事情。我得到不一致的结果!有时候我会得到一个没有传奇的人物。我不知道为什么。我运行的是mpl 3.5.1和pandas 1.4.2。在我的原始笔记本中,我无法获得正确的行为。
1条答案
按热度按时间8qgya5xd1#
为了避免绘制图例,我们可以将
legend=False
作为参数传递给df.plot
。要将图例限制为前N个标签,我们可以运行ax.legend(list_of_labels_to_show)
。为了显示任意一组标签,我们可以在相同的轴上分两步分别绘制数据,其中legend=False
在不应该显示的轴上。范例:
字符串
输出量:
的数据