Remove the legend on a matplotlib figure

后端 未结 8 1058
隐瞒了意图╮
隐瞒了意图╮ 2020-11-30 19:01

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

相关标签:
8条回答
  • 2020-11-30 19:16

    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_

    0 讨论(0)
  • 2020-11-30 19:16

    According to the information from @naitsirhc, I wanted to find the official API documentation. Here are my finding and some sample code.

    1. I created a matplotlib.Axes object by seaborn.scatterplot().
    2. The ax.get_legend() will return a matplotlib.legned.Legend instance.
    3. Finally, you call .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()
    
    0 讨论(0)
  • 2020-11-30 19:19

    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()
    
    0 讨论(0)
  • 2020-11-30 19:21

    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)
    
    0 讨论(0)
  • 2020-11-30 19:28

    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?)

    0 讨论(0)
  • 2020-11-30 19:28

    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()
    
    0 讨论(0)
提交回复
热议问题