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()
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:
y plt.savefig("temp.png")
da como resultado esta salida:
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.