Ask an expert. Trust the answer.

Your academic and career questions answered by verified experts

Matlab saving figure with predefined size

Date: 2022-07-26 11:10:15

I have a figure with 2 plots on it. I am trying to save the figure as a png with a longer width. 

 

 %%%%%%%%%%%%First%%%%%%%%%%%%%%%%%%
a=figure('Name','First Structure');
load C:\Users\William\workspace\P5\FirstAdd.txt
n=FirstAdd(:,1);
t=FirstAdd(:,2);
subplot(1,2,1);
plot(n,t);
xlabel('n');
ylabel('Time');
title('First Structure''s Add');
grid on

load C:\Users\William\workspace\P5\FirstContains.txt
n=FirstContains(:,1);
t=FirstContains(:,2);
subplot(1,2,2);
plot(n,t);
xlabel('n');
ylabel('Time');
title('First Structure''s Contains');
grid on

rect=[250,250,1080,480];
set(a, 'OuterPosition',rect);
print(a,'-dpng','First Structure.png');

In the last 3 lines I set the figure window such that the 2 plots are wide enough. However, when I try to save the figure, the image is its default size in which the plots are squished.

What am I missing? 

Answers: 

The OuterPosition figure property only changes where the figure window is on the screen; it doesn't change how it will print.

Matlab uses the PaperSizePaperUnitsPaperPosition and similar figure properties when "printing" a figure, even when they don't really make sense, such as when producing a bitmap file. (Settings PaperUnits to pixels would be logical, but it doesn't work.)

The procedure for getting a particular image size in pixels is to set PaperPosition to some size in inches (or another physical unit) and then specify the desired resolution in dots per inch using the -r option to print

 

r = 150; % pixels per inch
set(gcf, 'PaperUnits', 'inches', 'PaperPosition', [0 0 1080 480]/r);
print(gcf,'-dpng',sprintf('-r%d',r), 'bar.png');

Some of these peculiarities are discussed in the help for the print function.

You could also try the -r0 option which tells Matlab to use the display resolution.

 

Why Matlabhelpers ?

Our Matlab assignment helpers for online MATLAB assignment help service take utmost care of your assignments by keeping the codes simple yet of high-quality. We offer the most reliable MATLAB solutions to students pursuing their Computer Science course from the Monash University, the University of Sydney, the University of New South Wales, the University of Melbourne; to name a few. Approach us today for best Matlab solutions online!

whatsApp order on matlabhelpers.com

telegram order on matlabsolutions.com