MATLAB Answers

What is the difference between a "histogram" and "mesh" when printing the figure to pdf

4 views (last 30 days)
I've been trying to make plots of some data for a text I'm writing with TeX. I'm using this piece of code for changing and printing the plots:
set(0,'defaulttextinterpreter','latex');
set(0,'DefaultTextFontname', 'CMU Serif')
set(0,'DefaultAxesFontName', 'CMU Serif')
set(gcf,'PaperPositionMode','auto');
set(gcf,'PaperOrientation','landscape');
% I've tried this before, doesn't change the outcome
% set(gca,'FontName','CMU Sans Serif');
print('-dpdf','-bestfit','filename.pdf');
This works perfectly for some mesh plots im using:
mesh(data);
but for a histogram:
histogram(different_data,'EdgeColor','none','BinWidth',1,'Normalization','probability');
I get a nice figure:
but a bad pdf file:
Does anyone know a way I can fix this within matlab?

Accepted Answer

Abhinav Gurram
Abhinav Gurram on 22 May 2017
There can be quite a few reasons to why the histogram doesn't print as well as the mesh, to a pdf. A couple of things you can look at would be:
  • Resolution - By default, the resolution for figures is 150 dpi. You can try adjusting the resolution to your liking and check to see if the two plots(histogram, mesh) still look different. However, keep in mind that using a higher resolution value can yield higher-quality output but at the cost of higher memory use and larger output files. Furthermore, the higher the resolution setting, the longer it takes to render your figure.
  • InvertHardCopy - This property changes the background color to white, changes white text objects and axes objects to black and changes black text objects and axes objects to white. This property is on by default, therefore, try turning this property off and see if makes any difference.
  • Renderer - Graphics renderer, specified as '-opengl' or '-painters'. This is by default set to
There are a lot of other properties you can configure for the 'print' command and as figure options, to enhance the quality of your image. You can find a list of these properties here:
  1. Print properties
  2. Figure properties
Hope this helps!
  1 Comment
Christian Wittpahl
Christian Wittpahl on 26 May 2017
Setting the renderer to '-opengl' solved it, I guess it automatically uses opengl for the mesh plot. Thank you very much!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!