How do you improve matplotlib image quality?
graph, matplotlib, python
Solution
You can save the images in a vector format so that they will be scalable without quality loss. Such formats are PDF and EPS. Just change the extension to `.pdf` or `.eps` and matplotlib will write the correct image format. Remember `LaTeX` likes EPS and `PDFLaTeX` likes PDF images. Although most modern LaTeX executables are PDFLaTeX in disguise and convert EPS files on the fly (same effect as if you included the `epstopdf` package in your preamble, which may not perform as well as you'd like).
Alternatively, increase the DPI, a lot. These are the numbers you should keep in mind:
- 300dpi: plain paper prints
- 600dpi: professional paper prints. Most commercial office printers reach this in their output.
- 1200dpi: professional poster/brochure grade quality.
I use these to adapt the quality of PNG figures in conjunction with `figure`'s `figsize` option, which allows for correctly scaled text and graphics as you improve the quality through dpi.
Problem
I am using a python program to produce some data, plotting the data using matplotlib.pyplot and then displaying the figure in a latex file. I am currently saving the figure as a .png file but the image quality isn't great. I've tried changing the DPI in `matplotlib.pyplot.figure(dpi=200)` etc but this seems to make little difference. I've also tried using differnet image formats but they all look a little faded and not very sharp. Has anyone else had this problem? Any help would be much appreciated