¿Cómo exportar gráficos de matplotlib con fondo transparente?

108

Estoy usando matplotlib para hacer algunos gráficos y desafortunadamente no puedo exportarlos sin el fondo blanco.

parcela de muestra con fondo blanco sólido

En otras palabras, cuando exporto un gráfico como este y lo coloco encima de otra imagen, el fondo blanco oculta lo que hay detrás en lugar de permitir que se vea. ¿Cómo puedo exportar trazados con un fondo transparente?

Cupitor
fuente

Respuestas:

177

Utilice la savefigfunción matplotlib con el argumento de palabra clave transparent=Truepara guardar la imagen como un archivo png.

In [30]: x = np.linspace(0,6,31)

In [31]: y = np.exp(-0.5*x) * np.sin(x)

In [32]: plot(x, y, 'bo-')
Out[32]: [<matplotlib.lines.Line2D at 0x3f29750>]            

In [33]: savefig('demo.png', transparent=True)

Resultado: demo.png

Por supuesto, esa trama no demuestra la transparencia. Aquí hay una captura de pantalla del archivo PNG que se muestra con el displaycomando ImageMagick . El patrón de tablero de ajedrez es el fondo que es visible a través de las partes transparentes del archivo PNG.

pantalla de captura de pantalla

Warren Weckesser
fuente
2

Los archivos png pueden manejar transparencia. Entonces, podría usar esta pregunta Guardar gráfico en un archivo de imagen en lugar de mostrarlo usando Matplotlib para guardar su gráfico como un pngarchivo.

Y si desea convertir todos los píxeles blancos en transparentes, existe esta otra pregunta: ¿ Usar PIL para hacer transparentes todos los píxeles blancos?

Si desea convertir un área completa en transparente, entonces está esta pregunta: Y luego use la biblioteca PIL como en esta pregunta Python PIL: ¿cómo hacer que el área sea transparente en PNG? para que su gráfico sea transparente.

Stephane Rolland
fuente
Gracias, pero esto no ayuda. Sabía que png es capaz de ser transparente, pero la salida de matplotlib no lo es. Además, su sugerencia solo cubre el caso cuando desea eliminar rectángulos. Quiero que se guarde mi trama y que se eliminen mis antecedentes.
Cupitor
2
Por lo que recuerdo, estableciste cuál es el color transparente en un png. expediente. Establezca el color blanco como color de transparencia y listo.
Stephane Rolland
¡Supongo que 255 es blanco y cuando voy con él pierdo mi trama!
Cupitor
eso es extraño. solo tus parcelas? el gráfico en negro y las unidades en negro y la curva azul también?
Stephane Rolland
1
hay esta pregunta sobre convertir todos los píxeles blancos en transparencias (sin usar la máscara como te vinculé
Stephane Rolland