python - subplots - por mar: leyenda con color de fondo
seaborn time series (2)
La siguiente pregunta explica cómo cambiar el color de fondo de una leyenda: el color de fondo de la leyenda matplotlib . Sin embargo, si utilizo seaborn esto no funciona. ¿Hay alguna forma de hacer esto?
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()
El método set_style()
puede tomar un argumento de estilo (por ejemplo, ''white''
, ''whitegrid''
, ''darkgrid''
, etc.) Y un dictado de parámetros para anular la estética de los valores predeterminados, incluido si se debe tener el marco de leyenda activado o no.
Si tienes otras pequeñas cosas de estilo que te gustaría cambiar, lo que a menudo hago, puedes configurarlas todas a la vez de esta manera.
import seaborn
seaborn.set_style(''darkgrid'', {''legend.frameon'':True})
Según los documentos , puede obtener la configuración de rc
actual de seaborn.axes_style()
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}
Seaborn desactiva el marco de leyenda de forma predeterminada, si desea personalizar el aspecto del marco, creo que deberá agregar frameon=True
cuando llame a plt.legend
.