How to export plots from matplotlib with transparent background?
PythonMatplotlibPlotTransparencyPython Problem Overview
I am using matplotlib to make some graphs and unfortunately I cannot export them without the 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:
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.
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.