python - instalar - ¿Cómo cambiar el color de fondo de la trama?
plot() python (5)
¿Algo como esto? Utilice la palabra clave axisbg
para subplot
:
>>> from matplotlib.figure import Figure
>>> from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
>>> figure = Figure()
>>> canvas = FigureCanvas(figure)
>>> axes = figure.add_subplot(1, 1, 1, axisbg=''red'')
>>> axes.plot([1,2,3])
[<matplotlib.lines.Line2D object at 0x2827e50>]
>>> canvas.print_figure(''red-bg.png'')
(Por supuesto, no es un diagrama de dispersión, y no es un fondo negro).
Estoy haciendo un diagrama de dispersión en matplotlib y necesito cambiar el fondo de la trama real a negro. Sé cómo cambiar el color de la cara de la trama usando:
fig = plt.figure()
fig.patch.set_facecolor(''xkcd:mint green'')
Mi problema es que esto cambia el color del espacio alrededor de la trama. ¿Cómo puedo cambiar el color de fondo real de la trama?
Si ya tiene un objeto de axes
, al igual que en la respuesta de Nick T , también puede usar
ax.patch.set_facecolor(''black'')
Un método es establecer manualmente el valor predeterminado para el color de fondo del eje dentro del script (ver Personalizar matplotlib ):
import matplotlib.pyplot as plt
plt.rcParams[''axes.facecolor''] = ''black''
Esto está en contraste con el método de Nick T, que cambia el color de fondo para un objeto de axes
específico. Restablecer los valores predeterminados es útil si está haciendo múltiples trazados diferentes con estilos similares y no quiere seguir cambiando diferentes objetos de axes
.
Nota: El equivalente para
fig = plt.figure()
fig.patch.set_facecolor(''black'')
de tu pregunta es:
plt.rcParams[''figure.facecolor''] = ''black''
Una sugerencia en otras respuestas es usar ax.set_axis_bgcolor("red")
. Sin embargo, esto está en desuso y no funciona en MatPlotLib> = v2.0.
También está la sugerencia de usar ax.patch.set_facecolor("red")
(funciona en MatPlotLib v1.5 y v2.2). Si bien esto funciona bien, una solución aún más fácil para v2.0 + es usar
ax.set_facecolor("red")
Utilice el set_facecolor(color)
del objeto de axes
, que ha creado de las siguientes maneras:
Has creado una figura y un eje / es juntos
fig, ax = plt.subplots(nrows=1, ncols=1)
Creaste una figura, luego ejes / es más tarde
fig = plt.figure() ax = fig.add_subplot(1, 1, 1) # nrows, ncols, index
Usaste la API con estado (si estás haciendo algo más que unas pocas líneas, y especialmente si tienes varias representaciones, los métodos orientados a objetos anteriores te facilitan la vida porque puedes consultar figuras específicas, trazar en ciertos ejes y personalizar ya sea)
plt.plot(...) ax = plt.gca()
Entonces puedes usar set_facecolor
:
ax.set_facecolor(''xkcd:salmon'')
ax.set_facecolor((1.0, 0.47, 0.42))
Como recordatorio de qué colores pueden ser:
matplotlib.colors
Matplotlib reconoce los siguientes formatos para especificar un color:
- una tupla RGB o RGBA de valores de flotación en
[0, 1]
(por ejemplo,(0.1, 0.2, 0.5)
o(0.1, 0.2, 0.5, 0.3)
);- una cadena hexadecimal RGB o RGBA (p. ej.,
''#0F0F0F''
o''#0F0F0F0F''
);- una representación de cadena de un valor flotante en
[0, 1]
incluido para el nivel de gris (por ejemplo,''0.5''
);- uno de
{''b'', ''g'', ''r'', ''c'', ''m'', ''y'', ''k'', ''w''}
;- un nombre de color X11 / CSS4;
- un nombre de la encuesta de color xkcd ; prefijado con
''xkcd:''
(por ejemplo,''xkcd:sky blue''
);- uno de
{''tab:blue'', ''tab:orange'', ''tab:green'', ''tab:red'', ''tab:purple'', ''tab:brown'', ''tab:pink'', ''tab:gray'', ''tab:olive'', ''tab:cyan''}
que son los colores de Tableau de la paleta categórica ''T10'' (que es el ciclo de color predeterminado);- una especificación de color "CN", es decir, "C" seguida de un solo dígito, que es un índice en el ciclo de propiedad predeterminado (
matplotlib.rcParams[''axes.prop_cycle'']
); la indexación se produce al momento de la creación del artista y el valor predeterminado es negro si el ciclo no incluye el color.Todas las especificaciones de cadena de color, que no sean "CN", no distinguen entre mayúsculas y minúsculas.