2015-06-09 9 views
19

La seguente domanda spiega come modificare il colore di sfondo di una legenda: matplotlib legend background color. Tuttavia, se uso Seaborn questo non funziona. C'è un modo per fare questo?Seaborn: legenda con colore di sfondo

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

See metodo 'add_legend': https://github.com/mwaskom/seaborn/blob/master/ seaborn/axisgrid.py – xecafe

+0

Non sono sicuro di come mi possa essere d'aiuto - non ho un "seaborn.axisgrid.Grid" e gli assi non hanno un metodo "add_legend'. – mathause

risposta

34

Seaborn gira la leggenda telaio off di default, se si desidera personalizzare come il telaio sembra, credo che sarà necessario aggiungere frameon=True quando si chiama plt.legend.

+0

ahh ed è così facile ... – mathause

+2

ancora strano che 'frame = legend.get_frame()' restituisce qualcosa se in realtà non c'è frame – mathause

7

Procedimento set_style() può prendere un argomento stile (ad esempio 'white', 'whitegrid', 'darkgrid', etc.) e di un dizionario di parametri predefiniti per sovrascrivere estetica, compresi se avere telaio legenda o meno.

Se hai altre piccole cose di stile che vorresti cambiare, cosa che faccio spesso, puoi semplicemente impostarle tutte in una volta in questo modo.

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

Come da the docs, è possibile ottenere seaborn 's attuali rc impostazioni con 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}