2015-06-09 14 views
19

Poniższe pytanie wyjaśnia, jak zmienić kolor tła legendy: matplotlib legend background color. Jeśli jednak używam seaborn, to nie działa. Czy jest jakiś sposób na zrobienie tego?seaborn: legenda z kolorem tła

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

patrz metoda' add_legend': https://github.com/mwaskom/seaborn/blob/master/ seaborn/axgrid.py – xecafe

+0

Nie jestem pewien jak to mi pomoże - nie mam 'seaborn.axisgrid.Grid', a osie nie mają metody' add_legend'. – mathause

Odpowiedz

34

Seaborn okazuje legenda wrobić domyślnie wyłączona, jeśli chcesz dostosować sposób rama wygląda, myślę, że trzeba dodać frameon=True kiedy zadzwonić plt.legend.

+0

ahh i to takie proste ... – mathause

+2

wciąż dziwne, że 'frame = legend.get_frame()' zwraca coś, jeśli nie ma ramki – mathause

7

Sposób set_style() może argumentu stylu (np 'white', 'whitegrid', 'darkgrid', etc.) i dict parametrów, aby zastąpić domyślne estetyczne, w tym, czy ma ramę legendę lub nie.

Jeśli masz inne małe rzeczy do stylizacji, które chciałbyś zmienić, a które często robię, możesz ustawić je wszystkie naraz.

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

Zgodnie the docs, można uzyskać seaborn „s obecne rc ustawienia z 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}