How to change figure size?
Ältere Kommentare anzeigen
I'm trying to change the figure size. In the example below, I expected figure(2) to have a different size. In order to achieve this, I added:
set(gcf, 'PaperUnits', 'inches');
set(gcf, 'PaperSize', [4 2]);
set(gcf, 'PaperPositionMode', 'manual');
set(gcf, 'PaperPosition', [0 0 4 2]);
Any idea why this isn't working?
clc; clear all;
t = 0:.1:4*pi; y = sin(t);
figure(1)
set(gcf, 'renderer', 'painters');
plot(t,y)
xlabel('Time(s)') ylabel('y(t)')
title('Sin function')
legend('y=sin(t)')
axis([0 t(end) -1.5 1.5])
set(gca,...
'Units','normalized',...
'YTick',-1.5:.5:1.5,...
'XTick',0:t(end)/4:t(end),...
'FontUnits','points',...
'FontWeight','normal',...
'FontSize',9,...
'FontName','Times')
set(gca, 'Position', get(gca, 'OuterPosition') - ...
get(gca, 'TightInset') * [-1 0 1 0; 0 -1 0 1; 0 0 1 0; 0 0 0 1]);
figure(2)
set(gcf, 'renderer', 'painters');
set(gcf, 'PaperUnits', 'inches');
set(gcf, 'PaperSize', [4 2]);
set(gcf, 'PaperPositionMode', 'manual');
set(gcf, 'PaperPosition', [0 0 4 2]);
plot(t,y)
xlabel('Time(s)')
ylabel('y(t)')
title('Sin function')
legend('y=sin(t)')
axis([0 t(end) -1.5 1.5])
set(gca,...
'Units','normalized',...
'YTick',-1.5:.5:1.5,...
'XTick',0:t(end)/4:t(end),...
'FontUnits','points',...
'FontWeight','normal',...
'FontSize',9,...
'FontName','Times')
set(gca, 'Position', get(gca, 'OuterPosition') - ...
get(gca, 'TightInset') * [-1 0 1 0; 0 -1 0 1; 0 0 1 0; 0 0 0 1]);
Akzeptierte Antwort
Weitere Antworten (4)
Constantino Carlos Reyes-Aldasoro
am 13 Jul. 2018
First, there seems to be some confusion as to what your refer by size, which can be a) on the screen or b) printed or c) in pixel size (as in a jpg).
If you want to have the two figures in the screen with identical sizes, then the important parameter is 'Position' OF THE FIGURE, i.e.
figure(1)
plot(t,y)
set(gcf,'Position',[100 100 500 500])
figure(2)
plot(t2,y2)
set(gcf,'Position',[100 100 500 500])
That will have the two figures with exactly the same size, and in the same position. You can change where each is placed and the dimensions. Actually, it is better to use handles than gcf as gcf uses the last figure that was addressed, example
h1=figure(1);
plot(t,y)
set(h1,'Position',[10 10 500 500])
h2=figure(2);
plot(t2,y2)
set(h2,'Position',[510 10 500 500])
Notice that gcf refers to figures, if you change with gca, you will be moving the axis INSIDE the figure but the figure size will not change.
If you want to change in print or in an external image let me know and I will expand.
2 Kommentare
Jan Cagan
am 23 Jul. 2018
Dear Constantino,
Thank you for the detailed answer. As regards "Printing and Exporting" properties of a figure, I am dealing with this properties correctly I think. Currently, I am observing that the problem is not about exporting. Also, other graphical objects have problems with size consistency. For example, "msgbox" with the same text has different size sometimes...
J.
Henri Skinner
am 9 Sep. 2020
This was very helpful for my problem, thanks Constantino!
Chad Greene
am 30 Jan. 2015
8 Stimmen
Jan Cagan
am 5 Jun. 2018
Hi,
I am using this figure initialization and export:
fig = figure('units','inch','position',[0,0,3.3,2*3.3/3]);
print(fig,name,'-r800','-dpng');
In most cases, the output has the same size, but sometimes the size is a bit different. Why? How to avoid this behavior? I am using Matlab in Ubuntu 16.04 with -nodesktop -softwareopengl
Thank you in advance. J.
1 Kommentar
Ethan Duckworth
am 10 Okt. 2022
It's hard to know without seeing your examples why they come out slightly different. But I would guess it's the labels and/or numbers on the axes.
karim botros
am 12 Jun. 2023
It is simple in matlab, this feature is integrated in position property of Figure function.
All you have to do is to replace the values of startingX startingY Width Height, like the following:
figure('Position',[startingX startingY Width Height]);
% Example with numerical values.
figure('Position',[600 100 1500 1000]);
It is a bit not very intuitive in matlab since they combine size and position in one property but now you know to set them both.
Kategorien
Mehr zu Creating, Deleting, and Querying Graphics Objects finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!