How to export plots from matplotlib with transparent background?

PythonMatplotlibPlotTransparency

Python Problem Overview


I am using matplotlib to make some graphs and unfortunately I cannot export them without the white background.

sample plot with solid white background

In other words, when I export a plot like this and position it on top of another image, the white background hides what is behind it rather than allowing it to show through. How can I export plots with a transparent background instead?

Python Solutions


Solution 1 - Python

Use the matplotlib savefig function with the keyword argument transparent=True to save the image as a png file.

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)

Result: demo.png

Of course, that plot doesn't demonstrate the transparency. Here's a screenshot of the PNG file displayed using the ImageMagick display command. The checkerboard pattern is the background that is visible through the transparent parts of the PNG file.

display screenshot

Solution 2 - Python

Png files can handle transparency. So you could use this question https://stackoverflow.com/questions/9622163/matplotlib-save-plot-to-image-file-instead-of-displaying-it-so-can-be-used-in-b so as to save you graph as a png file.

And if you want to turn all white pixel transparent, there's this other question : https://stackoverflow.com/questions/765736/using-pil-to-make-all-white-pixels-transparent

If you want to turn an entire area to transparent, then there's this question: And then use the PIL library like in this question https://stackoverflow.com/questions/4379978/python-pil-how-to-make-area-transparent-in-png so as to make your graph transparent.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCupitorView Question on Stackoverflow
Solution 1 - PythonWarren WeckesserView Answer on Stackoverflow
Solution 2 - PythonStephane RollandView Answer on Stackoverflow