web-dev-qa-db-fra.com

seaborn: légende avec couleur de fond

La question suivante explique comment changer la couleur d'arrière-plan d'une légende: couleur d'arrière-plan de la légende matplotlib . Cependant, si j'utilise seaborn, cela ne fonctionne pas. Y a-t-il un moyen de faire cela?

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

21
mathause

seaborn désactive le cadre de la légende par défaut, si vous souhaitez personnaliser l'apparence du cadre, je pense que vous devrez ajouter frameon=True quand vous appelez plt.legend.

38
mwaskom

La méthode set_style() peut prendre un argument de style (par exemple 'white', 'whitegrid', 'darkgrid', Etc.) ET une dictée de paramètres pour remplacer l'esthétique par défaut, y compris si le cadre de légende doit être activé ou non.

Si vous avez d'autres petites choses de style que vous aimeriez changer, ce que je fais souvent, vous pouvez simplement les régler en même temps de cette façon.

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

Selon la documentation , vous pouvez obtenir les paramètres actuels de seabornrc avec 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}
10
ryanjdillon