Saltar al contenido

Cómo establecer la opacidad del color de fondo del gráfico con Matplotlib

Solución:

Si solo desea que todo el fondo de la figura y los ejes sean transparentes, simplemente puede especificar transparent=True al guardar la figura con fig.savefig.

p.ej:

import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot(range(10))
fig.savefig('temp.png', transparent=True)

Si desea un control más detallado, simplemente puede establecer el color de la cara y / o los valores alfa para la figura y el parche de fondo de los ejes. (Para hacer un parche completamente transparente, podemos establecer el alfa en 0 o establecer el color de la cara en 'none' (como una cuerda, no el objeto None!))

p.ej:

import matplotlib.pyplot as plt

fig = plt.figure()

fig.patch.set_facecolor('blue')
fig.patch.set_alpha(0.7)

ax = fig.add_subplot(111)

ax.plot(range(10))

ax.patch.set_facecolor('red')
ax.patch.set_alpha(0.5)

# If we don't specify the edgecolor and facecolor for the figure when
# saving with savefig, it will override the value we set earlier!
fig.savefig('temp.png', facecolor=fig.get_facecolor(), edgecolor="none")

plt.show()

texto alternativo

Otra forma es establecer el apropiado global rcParams y simplemente especifique los colores. Aquí hay un MWE (utilicé el formato de color RGBA para especificar el alfa / opacidad):

import matplotlib.pyplot as plt

plt.rcParams.update({
    "figure.facecolor":  (1.0, 0.0, 0.0, 0.3),  # red   with alpha = 30%
    "axes.facecolor":    (0.0, 1.0, 0.0, 0.5),  # green with alpha = 50%
    "savefig.facecolor": (0.0, 0.0, 1.0, 0.2),  # blue  with alpha = 20%
})

plt.plot(range(10))
plt.savefig("temp.png")
plt.show()

los figure.facecolor es el color de fondo principal y el axes.facecolor el color de fondo de la trama real. Por cualquier razón, plt.savefig usos savefig.facecolor como color de fondo principal en lugar de figure.facecolor, así que asegúrese de cambiar este parámetro en consecuencia.

plt.show() del código anterior da como resultado la siguiente salida:

ingrese la descripción de la imagen aquí

y plt.savefig("temp.png") da como resultado esta salida:

ingrese la descripción de la imagen aquí

Si desea hacer algo completamente transparente, simplemente establezca el valor alfa del color correspondiente en 0. Para plt.savefig, también hay una opción “perezosa” configurando el parámetro rc savefig.transparent para True, que establece el alfa de todos los colores faciales en 0%.

Tenga en cuenta que alterar el rcParams tiene un efecto global, así que tenga en cuenta que todas sus parcelas se verán afectadas por estos cambios. Sin embargo, esta solución puede ser extremadamente útil si tiene varias parcelas o si desea cambiar la apariencia de las parcelas en las que no puede cambiar el código fuente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *