How to keep the same size in figures

81 views (last 30 days)
I have the code at the bottom of the page.
The code is executed inside a function inside a for loop so for every iteration t of the loop an image is saved.
I want to use those images to make a video by displaying them one after the other but when doing that they are a bit moved, I mean, the axes are not in the exact same position in every image so when changing form one to the next sometimes there is a gap and the video looks awful. Data in every iteration is very similar an axis limits are exactly the same and data never exceed axis limits. How can I do to create images with the axes in the same position and with the same exact size?
Thank you in advance
Fig1 = figure(Visible="off");
ax1 = axes('Parent',Fig1);
xlabel('$z/h$','interpreter','latex','color','w')
ylabel('$x/h$','interpreter','latex','color','w')
zlabel('$y/h$','interpreter','latex','color','w')
set(gca,'fontsize',12,'color','k')
shading interp;
ax1.XColor = 'white';
ax1.YColor = 'white';
ax1.ZColor = 'white';
xlim ([0 xmax]);
ylim ([0 ymax]);
zlim ([0 zmax]);
axis tickaligned
axes(ax1)
set(gcf,Visible='Off')
isosurface(x,y,z,sol,treshold);
lighting phong
box on;
view(52,27)
axis equal
axis tickaligned;
h = camlight;
set(h,'style','infinite')
set(h,'position',[3 -5 15])
xlim ([0 xmax]);
ylim ([0 ymax]);
zlim ([0 zmax]);
set(gcf,'color','k')
print(fullfile(figuresdir, strcat('number', num2str(t))), '-dpng','-r400');

Answers (2)

Biral Pradhan
Biral Pradhan on 3 Jun 2022
I understand, you are generating plot images iteratively, and want to control axis layout. Kindly follow the documentation link below to resolve the issue.

Eduardo Vicente Wolf Trentini
I had the same problem as you and finally managed to solve it.
The problem is the camera's field of view. I don't know why matlab changes it from figure to figure even though the axes limits are the same.
In my case a value of 6.1 fits the figure, in yours it may be different.
To be a fixed value in your case, I believe it is like this:
ax1.CameraViewAngle = 6.1;
In my case I solved it like this:
mygca = gca;
mygca.CameraViewAngle = 6.1;
You must set this value every time you create a new figure.
If a difference still persists you can try to fix the position too:
mygca.Position = [0 0 1 1];

Community Treasure Hunt

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

Start Hunting!