要将图例添加到matplotlib图中,只需运行即可legend()
。
如何从情节中删除图例?
(我最接近的是运行legend([])
该命令以从数据中清空图例。但这在右上角留下了一个难看的白色矩形。)
要将图例添加到matplotlib图中,只需运行即可legend()
。
如何从情节中删除图例?
(我最接近的是运行legend([])
该命令以从数据中清空图例。但这在右上角留下了一个难看的白色矩形。)
Answers:
从matplotlib开始v1.4.0rc4
,remove
已将一个方法添加到图例对象。
用法:
ax.get_legend().remove()
要么
legend = ax.legend(...)
...
legend.remove()
请参阅此处以了解引入的提交。
您必须添加以下代码行:
ax = gca()
ax.legend_ = None
draw()
gca()返回当前的轴手柄,并具有该属性legend_
draw()
的show()
。还是使用有特别的优势draw
?
show()
如果图形更新是程序的最后一个命令,则可以。 draw()
很好,因为它是常规图形更新命令。例如,您可能想要在更新图形后提示用户在终端中进行某些输入,而这无法通过阻塞完成show()
。
draw
更合适(但我一直都习惯于show
更新图表...)。
如果您不使用无花果和斧头绘图对象,则可以这样做:
import matplotlib.pyplot as plt
# do plot specifics
plt.legend('')
plt.show()
我通过将其添加到图中而不是轴(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()
根据@naitsirhc的信息,我想找到官方的API文档。这是我的发现和一些示例代码。
matplotlib.Axes
对象seaborn.scatterplot()
。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()
ax.get_legend().remove()
解决方案在我的情况下不起作用,而第二个解决方案(legend = ax.legend() ... legend.remove()
)起作用。也许是因为ax
是一个AxesSubplot
在我的情况?