Como exportar plotagens de matplotlib com fundo transparente?

107

Estou usando o matplotlib para fazer alguns gráficos e infelizmente não consigo exportá-los sem o fundo branco.

lote de amostra com fundo branco sólido

Em outras palavras, quando eu exporto um gráfico como este e o posiciono sobre outra imagem, o fundo branco oculta o que está por trás dele em vez de permitir que ele apareça. Como posso exportar plotagens com fundo transparente?

Cupitor
fonte

Respostas:

176

Use a savefigfunção matplotlib com o argumento de palavra-chave transparent=Truepara salvar a imagem como um arquivo 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

Claro, esse enredo não demonstra a transparência. Aqui está uma captura de tela do arquivo PNG exibido usando o displaycomando ImageMagick . O padrão quadriculado é o fundo visível através das partes transparentes do arquivo PNG.

exibir captura de tela

Warren Weckesser
fonte
2

Arquivos Png podem lidar com transparência. Portanto, você pode usar esta questão Salvar gráfico em arquivo de imagem em vez de exibi-lo usando Matplotlib para salvar seu gráfico como um pngarquivo.

E se você quiser tornar todos os pixels brancos transparentes, há outra questão: Usando PIL para tornar todos os pixels brancos transparentes?

Se você quiser tornar uma área inteira transparente, então há esta questão: E então use a biblioteca PIL como nesta questão Python PIL: como tornar a área transparente em PNG? para tornar seu gráfico transparente.

Stephane Rolland
fonte
Obrigado, mas isso não ajuda. Eu sabia que o png é capaz de ser transparente, mas a saída do matplotlib não. Além disso, sua sugestão cobre apenas o caso quando você deseja remover retângulos. Eu quero que meu gráfico seja salvo e meu fundo seja removido.
Cupitor
2
Pelo que me lembro, você definiu qual é a cor transparente em um png. Arquivo. Defina a cor branca como a cor da transparência e pronto.
Stephane Rolland,
Suponho que 255 seja branco e, quando vou com ele, perco meu enredo!
Cupitor
isso é estranho. seus enredos apenas? o gráfico em preto e as unidades em preto e a curva azul também?
Stephane Rolland,
1
há uma questão sobre transformar todo pixel branco em transparência (sem usar a máscara como eu coloquei no link a você) stackoverflow.com/questions/765736/…
Stephane Rolland