2011-04-20 113 views
67

要将图例添加到matplotlib图中,只需运行legend()删除matplotlib图中的图例

如何到删除从情节的传说?

(我来到这个最接近的是为了清空从数据的图例运行legend([]),但还有在右上角一个丑陋的白色矩形。)

回答

63

matplotlib v1.4.0rc4开始,remove方法已被添加到图例对象中。

用法:

ax.legend_.remove() 

legend = ax.legend(...) 
... 
legend.remove() 

here为这个地方介绍的承诺。

15

必须添加以下行代码:

ax = gca() 
ax.legend_ = None 
draw() 

GCA()返回当前轴手柄,并且具有财产legend_

+0

谢谢,这似乎工作。 (但是多么可怕的界面......)我建议用'show()'替换'draw()'。或者在使用'draw'方面有特别的优势? – 2011-04-20 19:10:03

+0

如果图更新是程序的最后一个命令,则show()将会正常。 'draw()'很好,因为它是一般的图形更新命令。您可能想要在更新图形后提示用户在终端中输入一些内容,这不能通过阻塞'show()'来完成。 – EOL 2011-04-20 20:19:32

+0

没错。感谢你的回答。现在我同意'draw'更合适(但我总是使用'show'来更新我的图表......)。 – 2011-04-20 20:31:22

60

你可以用图例的set_visible方法:

ax.legend().set_visible(False) 
draw() 

这是基于提供给我的响应类似的问题一个答案前段时间here

(用于回答Jouni谢谢 - 对不起,我无法标记问题的回答......或许有人可以为我做这件事吗?)

+3

这只隐藏了这个图例,它实际上并没有移除这个对象,对吧? – vlsd 2013-09-28 20:25:24

41

如果要绘制Pandas数据框并想要删除图例,请将legend = None作为参数添加到plot命令。

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

df2 = pd.DataFrame(np.random.randn(10, 5)) 
df2.plot(legend=None) 
plt.show()