Подтвердить что ты не робот

Цвет фона легенды matplotlib

Пока существует rcParams['legend.frameon'] = 'False' простой способ заполнить фон области легенды заданным цветом. Более конкретно, я хотел бы, чтобы сетка не отображалась в области легенды, потому что она мешает чтению текста.

Ключевое слово framealpha звучит как то, что мне нужно, но оно ничего не меняет.

import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['legend.frameon'] = 'False'
plt.plot(range(5), label = u"line")
plt.grid(True)
plt.legend(loc = best)
plt.show()

Я также пробовал:

legend = plt.legend(frameon = 1)
frame = legend.get_frame()
frame.set_color('white')

но тогда мне нужно спросить, как я могу изменить цвет фона при сохранении рамки? Иногда я хочу его использовать с цветом фона, отличным от белого. А также есть ли способ изменить цвет рамки? С приведенным выше кодом я ожидал изменить цвет только фрейма, а не фона.

4b9b3361

Ответ 1

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

frame.set_facecolor('green')
frame.set_edgecolor('red')

Там больше информации в разделе FancyBboxPatch здесь.

Ответ 2

В дополнение к методу Молли вы можете отключить фрейм с использованием ширины линии:

frame.set_linewidth(0)

Я использовал этот метод в небольшой удобной функции, которую я написал, чтобы скрыть рамки легенды по той же причине, которую вы цитируете. Эта функция называется adjust_legends в print_targeted_plots модуле, доступном из github.