How to plot high resolution?

100 views (last 30 days)
Mr M.
Mr M. on 21 Oct 2017
Commented: Akira Agata on 22 Feb 2018
I would like to plot a histogram with 2048 bins. Is it possible plot and save it? pdf? retina display
  3 Comments
Mr M.
Mr M. on 14 Feb 2018
My problem is that I have retina display (2880x1800) but MATLAB cannot use it. The biggest plot window is 1440x900px (this is the fullscreen).
Jan
Jan on 14 Feb 2018
@Mr. M: Please insert this important information on top of your question: You are using a Mac with Retina display.

Sign in to comment.

Answers (2)

Akira Agata
Akira Agata on 23 Oct 2017
How about adjusting a resolution by setting 'Position' property of figure. Here is an example.
% Sample data
mu = 0.0;
sigma = 1.0;
x = normrnd(mu,sigma,100000,1);
% Plot histogram with 2048 bins in full HD (1920x1080) resolution
figure('Position',[0 0 1920 1080])
histogram(x,'NumBins',2048)
  2 Comments
Mr M.
Mr M. on 14 Feb 2018
Fisrt, my retina resolution is greater (2880x1800), however there is a problem with any resolution less than 2048 because of information loss. I need at least one pixel column for each bar on the histogram!
Akira Agata
Akira Agata on 22 Feb 2018
OK. Then, how about saving your histogram as a high-resolution image?
mu = 0.0;
sigma = 1.0;
x = normrnd(mu,sigma,100000,1);
dpi = 150; % Resolution
sz = [0 0 2880 1800]; % Image size in pixels
% Plot histogram with 2048 bins
% and save as an .tiff image file
% with 2880x1800 pixel and 150 dpi
figure(...
'PaperUnits','inches',...
'PaperPosition', sz/dpi,...
'PaperPositionMode','manual',...
'Visible', 'off')
histogram(x,'NumBins',2048)
print('-r150','-dtiff','histogram.tiff');

Sign in to comment.


Mr M.
Mr M. on 14 Feb 2018
Could anyone solve this question?
  5 Comments
Mr M.
Mr M. on 21 Feb 2018
Edited: Mr M. on 21 Feb 2018
This is not a rendering problem what I am talking about! this is a resolution setting problem! Once more: set(gcf,'unit','pixel','position',[0 0 1600 1200]); fullfills the screen!!
Walter Roberson
Walter Roberson on 21 Feb 2018
The reason that set(gcf,'unit','pixel','position',[0 0 1600 1200]) fills the screen is that for Retina displays, MATLAB arbitrarily declares that a "pixel" is to be 1/72 of an inch (which just happens to be the same as a "point") -- as described at https://www.mathworks.com/help/matlab/creating_guis/dpi-aware-behavior-in-matlab.html#buyrn8d
"Units Property
When you set the Units property of a graphics or UI object to 'pixels', the size of each pixel is now device-independent on Windows and Macintosh systems:
  • On Windows systems, 1 pixel = 1/96 inch.
  • On Macintosh systems, 1 pixel = 1/72 inch."
The full hardware resolution is still there and you can still put up images at the full hardware resolution: you just have to be careful about specifying sizes in units of Pixel. For example, you could:
set(gcf,'unit','norm','position',[0 0 1 1])

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!