Удалить легенду на фигуре Matplotlib - PullRequest
115 голосов
/ 20 апреля 2011

Чтобы добавить легенду к сюжету matplotlib, достаточно просто запустить legend().

Как удалить легенду из сюжета?

(Ближайший Iпришло к этому, чтобы запустить legend([]), чтобы очистить легенду от данных. Но это оставляет уродливый белый прямоугольник в верхнем правом углу.)

Ответы [ 6 ]

138 голосов
/ 10 ноября 2014

Начиная с matplotlib v1.4.0rc4, к объекту легенды добавлен метод remove.

Использование:

ax.get_legend().remove()

или

legend = ax.legend(...)
...
legend.remove()

См. здесь для коммита, где это было введено.

79 голосов
/ 26 апреля 2011

Вы можете использовать метод легенды set_visible:

ax.legend().set_visible(False)
draw()

Это основано на ответе, предоставленном мне в ответ на похожий вопрос, который у меня был некоторое время назад здесь

(Спасибо за этот ответ, Джоуни - извините, я не смог пометить вопрос как ответивший ... возможно, кто-то, кто имеет полномочия, может сделать это для меня?)

65 голосов
/ 13 ноября 2014

Если вы хотите построить график данных 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()
17 голосов
/ 20 апреля 2011

Вы должны добавить следующие строки кода:

ax = gca()
ax.legend_ = None
draw()

gca () возвращает текущий дескриптор осей и имеет это свойство legend_

1 голос
/ 23 мая 2019

Если вы не используете объекты для рисования и топора, вы можете сделать это так:

import matplotlib.pyplot as plt

# do plot specifics
plt.legend('')
plt.show()
1 голос
/ 16 октября 2018

Я сделал легенду, добавив ее к рисунку, а не к оси (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()
...