要在matplotlib图中添加图例,只需运行legend()
。
如何从图中删除图例?
(我最接近的是运行legend([])
以便从数据中清空图例。但是这会在右上角留下一个丑陋的白色矩形。)
答案 0 :(得分:134)
自matplotlib v1.4.0rc4
起,remove
方法已添加到图例对象中。
用法:
ax.get_legend().remove()
或
legend = ax.legend(...)
...
legend.remove()
请参阅here以了解引入此内容的提交。
答案 1 :(得分:78)
您可以使用图例的set_visible
方法:
ax.legend().set_visible(False)
draw()
这是基于我在回答一段时间前的类似问题时提供给我的答案here
(感谢您的回答Jouni - 对不起,我无法将问题标记为已回答......也许有权限的人可以为我这样做?)
答案 2 :(得分:61)
如果要绘制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()
答案 3 :(得分:17)
您必须添加以下代码行:
ax = gca()
ax.legend_ = None
draw()
gca()返回当前的轴句柄,并具有该属性legend _
答案 4 :(得分:3)
如果您以pyplot
的身分呼叫plt
frameon=False
是要删除图例周围的边框
和''传递的信息是图例中不得包含变量
import matplotlib.pyplot as plt
plt.legend('',frameon=False)
答案 5 :(得分:1)
我通过将其添加到图形而不是轴(matplotlib 2.2.2)来创建图例。要删除它,我将图形的legends
属性设置为一个空列表:
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()
ax1.plot(range(10), range(10, 20), label='line 1')
ax2.plot(range(10), range(30, 20, -1), label='line 2')
fig.legend()
fig.legends = []
plt.show()
答案 6 :(得分:1)
根据@naitsirhc的信息,我想找到官方的API文档。这是我的发现和一些示例代码。
seaborn.scatterplot()
创建了一个matplotlib.Axes
对象。ax.get_legend()
将返回一个matplotlib.legned.Legend
实例。.remove()
函数以从图例中删除图例。ax = sns.scatterplot(......)
_lg = ax.get_legend()
_lg.remove()
如果您查看matplotlib.legned.Legend
API文档,则不会看到.remove()
函数。
原因是matplotlib.legned.Legend
继承了matplotlib.artist.Artist
。因此,当您呼叫ax.get_legend().remove()
时,基本上会呼叫matplotlib.artist.Artist.remove()
。
最后,您甚至可以将代码简化为两行。
ax = sns.scatterplot(......)
ax.get_legend().remove()
答案 7 :(得分:0)
如果您不使用无花果和斧头图对象,可以这样做:
import matplotlib.pyplot as plt
# do plot specifics
plt.legend('')
plt.show()
答案 8 :(得分:0)
如果您使用的是 seaborn,则可以使用参数 legend
。即使您在同一个图中多次绘制。一些 df 的示例
import seaborn as sns
# Will display legend
ax1 = sns.lineplot(x='cars', y='miles', hue='brand', data=df)
# No legend displayed
ax2 = sns.lineplot(x='cars', y='miles', hue='brand', data=df, legend=None)