Effacer les filtres
Effacer les filtres

Help with making square and symmetric subplots

2 vues (au cours des 30 derniers jours)
Kyana Shayan
Kyana Shayan le 26 Avr 2018
Commenté : xi lin le 9 Jan 2020
Dear all,
I am trying to plot 6 graphs in a single plot using subplot function. I would like them to look in a square shape with same axes lengths. However, this is what I get (see attached figure). I have not made any arrangements in my code on subplots.
The code:
figure(3)
subplot(6,2,1,'align');
title(['Episode: ',int2str(i),' epsilon: ',num2str(epsilon)]);
plot(xpoints,ypoints,'Color',[0,0.7,0.9]);
pbaspect([2 2 1]);
xlabel('r');
ylabel('x');
drawnow
subplot(6,2,2,'align');
plot(xpoints,zpoints, 'Color','r');
pbaspect([1 1 1]);
xlabel('r');
ylabel('y');
drawnow
subplot(6,2,3,'align');
plot(xpoints,lpoints, 'Color','r');
pbaspect([1 1 1]);
xlabel('r');
ylabel('z');
drawnow
subplot(6,2,4,'align');
plot(xpoints,convpoints, 'Color','r');
pbaspect([1 1 1]);
xlabel('r');
ylabel('m');
drawnow
subplot(6,2,5,'align');
plot(xpoints,explore, 'Color','b');
pbaspect([1 1 1]);
xlabel(r');
ylabel('n');
drawnow
subplot(6,2,6,'align');
plot(xpoints,gpoints, 'Color','r');
pbaspect([1 1 1]);
xlabel('r');
ylabel('k');
drawnow
Really appreciate it if someone can help with this.
Kind Regards,
Kyana

Réponse acceptée

Ameer Hamza
Ameer Hamza le 26 Avr 2018
Try the following code, you can use the Position property of each axis to control its position, width, and height. More Information here.
subplot(321)
subplot(322)
subplot(323)
subplot(324)
subplot(325)
subplot(326)
f = gcf;
f.Units = 'pixels';
f.Position = [100 100 700 700];
for i=f.Children'
i.Position(3:4) = 0.25;
end
You must note that aspect ratio also depends on resizing of the figure window.
  3 commentaires
Ameer Hamza
Ameer Hamza le 27 Avr 2018
Try these settings,
f = gcf;
ax = f.Children;
f.Units = 'pixels';
f.Position = [100 100 700 700];
for i=1:length(ax)
if(mod(i, 2) == 1)
ax(i).Position(1:2) = [0.6 0.1+floor((i-1)/2)*0.3];
else
ax(i).Position(1:2) = [0.1 0.1+floor((i-1)/2)*0.3];
end
ax(i).Position(3:4) = 0.23;
end
You may need to experiment with ax(i).Position values because end result also depends on your screen resolution. Your figure looks like this on my screen after these settings.
xi lin
xi lin le 9 Jan 2020
great! this fixed my problem!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by