Удалить легенду на фигуре matplotlib

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

Как удалить легенду из графика?

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

Ответ 1

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

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

ax.get_legend().remove()

или же

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

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

Ответ 2

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

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

Это основано на ответе, предоставленном мне в ответ на аналогичный вопрос, который я имел некоторое время назад здесь

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

Ответ 3

Если вы хотите построить фреймворк 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()

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

import matplotlib.pyplot as plt

# do plot specifics
plt.legend('')
plt.show()