2015-06-09 2 views
19

Следующий вопрос объясняет, как изменить цвет фона легенды: matplotlib legend background color. Однако, если я использую морское дно, это не сработает. Есть ли способ сделать это?seaborn: legend with background color

import matplotlib.pyplot as plt 
import numpy as np 
a = np.random.rand(10,1) 

plt.plot(a, label='label') 
legend = plt.legend() 
frame = legend.get_frame() 
frame.set_facecolor('green') 
plt.show() 


import seaborn as sns 

plt.plot(a, label='label') 
legend = plt.legend() 
frame = legend.get_frame() 
frame.set_facecolor('green') 
plt.show() 

with matplotlibwith seaborn

+0

См метод' add_legend': https://github.com/mwaskom/seaborn/blob/master/ seaborn/axisgrid.py – xecafe

+0

Не знаю, как это мне поможет - у меня нет 'seaborn.axisgrid.Grid', а в осях нет метода' add_legend'. – mathause

ответ

34

Сиборн превращает легенда кадр по умолчанию отключена, если вы хотите настроить, как кадр выглядит, я думаю, вам нужно добавить frameon=True при вызове plt.legend.

+0

ahh и это так просто ... – mathause

+2

все еще странно, что 'frame = legend.get_frame()' возвращает что-то, если на самом деле нет кадра – mathause

7

set_style() метод может принимать аргумент стиля (например, 'white', 'whitegrid', 'darkgrid' и т.д.) и Dict параметров переопределить значения по умолчанию эстетики, в том числе того, чтобы иметь легенды кадр или нет.

Если у вас есть другие маленькие стилистические вещи, которые вы хотели бы изменить, что я часто делаю, вы можете просто установить их все сразу таким образом.

import seaborn 
seaborn.set_style('darkgrid', {'legend.frameon':True}) 

По the docs, вы можете получить seaborn «s текущие rc настройки с seaborn.axes_style()

{'axes.axisbelow': True, 
'axes.edgecolor': '.8', 
'axes.facecolor': 'white', 
'axes.grid': True, 
'axes.labelcolor': '.15', 
'axes.linewidth': 1.0, 
'figure.facecolor': 'white', 
'font.family': [u'sans-serif'], 
'font.sans-serif': [u'Arial', 
    u'DejaVu Sans', 
    u'Liberation Sans', 
    u'Bitstream Vera Sans', 
    u'sans-serif'], 
'grid.color': '.8', 
'grid.linestyle': u'-', 
'image.cmap': u'rocket', 
'legend.frameon': False, 
'legend.numpoints': 1, 
'legend.scatterpoints': 1, 
'lines.solid_capstyle': u'round', 
'text.color': '.15', 
'xtick.color': '.15', 
'xtick.direction': u'out', 
'xtick.major.size': 0.0, 
'xtick.minor.size': 0.0, 
'ytick.color': '.15', 
'ytick.direction': u'out', 
'ytick.major.size': 0.0, 
'ytick.minor.size': 0.0}