要将图例添加到matplotlib图例中,只需运行legend()。
legend()
如何删除一个传说从一个情节?
(我最接近这一点是运行legend([]),以便从数据中清空图例。但这在右上角留下了一个丑陋的白色矩形。)
legend([])
你必须添加以下几行代码:
ax = gca() ax.legend_ = None draw()
Gca()返回当前坐标轴句柄,并具有传奇_属性
你可以使用图例的set_visible方法:
set_visible
ax.legend().set_visible(False) draw()
这是基于一个回答提供给我的一个类似的问题,我有一段时间以前在这里
(谢谢你的回答,Jouni -我很抱歉我不能把问题标记为回答…也许有权威的人可以为我做这件事?)
从matplotlib v1.4.0rc4开始,一个remove方法被添加到图例对象中。
v1.4.0rc4
remove
用法:
ax.get_legend().remove()
或
legend = ax.legend(...) ... legend.remove()
请参阅在这里以获得引入该函数的提交。
如果你想绘制一个Pandas数据帧,并且想要删除图例,在plot命令中添加legend=None作为参数。
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()
我将图例添加到图形中,而不是添加到轴上(matplotlib 2.2.2)。为了删除它,我将图形的legends属性设置为一个空列表:
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()
如果你不使用fig和ax plot对象,你可以这样做:
import matplotlib.pyplot as plt # do plot specifics plt.legend('') plt.show()
如果你将pyplot调用为plt
pyplot
plt
frameon=False是删除图例周围的边框
frameon=False
“传递的信息是,图例中不应该有变量
import matplotlib.pyplot as plt plt.legend('',frameon=False)
根据@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()。
matplotlib.artist.Artist
matplotlib.artist.Artist.remove()
最后,您甚至可以将代码简化为两行。
ax = sns.scatterplot(......) ax.get_legend().remove()
如果你使用seaborn,你可以使用参数legend。即使你在同一个数字上画了不止一次。使用一些df的例子
legend
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)
下面是一个更复杂的例子,使用matplotlib和seaborn处理子图来删除和操作图例:
matplotlib
seaborn
从seaborn获取由sns.<some_plot>()创建的Axes对象,并执行@naitsirhc所指示的ax.get_legend().remove()。下面的例子还展示了如何将图例放在一边,以及如何在子情节的上下文中处理。
sns.<some_plot>()
Axes
# imports import seaborn as sns import matplotlib.pyplot as plt # get data sns.set() sns.set_theme(style="darkgrid") tips = sns.load_dataset("tips") # subplots fig, axes = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(12,6)) fig.suptitle('Example of legend manipulations on subplots with seaborn') g0 = sns.pointplot(ax=axes[0], data=tips, x="day", y="total_bill", hue="size") g0.set(title="Pointplot with no legend") g0.get_legend().remove() # <<< REMOVE LEGEND HERE g1 = sns.swarmplot(ax=axes[1], data=tips, x="day", y="total_bill", hue="size") g1.set(title="Swarmplot with legend aside") # change legend position: https://www.statology.org/seaborn-legend-position/ g1.legend(bbox_to_anchor=(1.02, 1), loc='upper left', borderaxespad=0)
你可以简单地这样做:
axs[n].legend(loc='upper left',ncol=2,labelspacing=0.01)
for i in [4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]:
axs[i].legend([])