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()
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
.
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 seaborn
rc
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}