To add a legend to a matplotlib plot, one simply runs legend()
.
How to remove a legend from a plot?
(The closest I came to this
you have to add the following lines of code:
ax = gca()
ax.legend_ = None
draw()
gca() returns the current axes handle, and has that property legend_
According to the information from @naitsirhc, I wanted to find the official API documentation. Here are my finding and some sample code.
matplotlib.Axes
object by seaborn.scatterplot().ax.get_legend()
will return a matplotlib.legned.Legend
instance..remove()
function to remove the legend from your plot.ax = sns.scatterplot(......)
_lg = ax.get_legend()
_lg.remove()
If you check the matplotlib.legned.Legend API document, you won't see the .remove()
function.
The reason is that the matplotlib.legned.Legend
inherited the matplotlib.artist.Artist. Therefore, when you call ax.get_legend().remove()
that basically call matplotlib.artist.Artist.remove().
In the end, you could even simplify the code into two lines.
ax = sns.scatterplot(......)
ax.get_legend().remove()
If you are not using fig and ax plot objects you can do it like so:
import matplotlib.pyplot as plt
# do plot specifics
plt.legend('')
plt.show()
if you call pyplot
as plt
frameon=False
is to remove the border around the legend
and '' is passing the information that no variable should be in the legend
import matplotlib.pyplot as plt
plt.legend('',frameon=False)
You could use the legend's set_visible
method:
ax.legend().set_visible(False)
draw()
This is based on a answer provided to me in response to a similar question I had some time ago here
(Thanks for that answer Jouni - I'm sorry I was unable to mark the question as answered... perhaps someone who has the authority can do so for me?)
I made a legend by adding it to the figure, not to an axis (matplotlib 2.2.2). To remove it, I set the legends
attribute of the figure to an empty list:
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()