How to code a figure having subplots with a for loop?
    45 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Hsinho Huang
 el 7 de En. de 2017
  
I want to simply the following codes to make a figure with 2-by-6 subplots. How can I make it with a for loop?
     figure(1);
     h1=subplot(2,6,1), hLine1=plot(X,A(1,:),X,B(1,:));title(type{1});
     h2=subplot(2,6,2), hLine2=plot(X,A(2,:),X,B(2,:));title(type{2});
     h3=subplot(2,6,3), hLine3=plot(X,A(3,:),X,B(3,:));title(type{3});
     h4=subplot(2,6,4), hLine4=plot(X,A(4,:),X,B(4,:));title(type{4});
     h5=subplot(2,6,5), hLine5=plot(X,A(5,:),X,B(5,:));title(type{5});
     h6=subplot(2,6,6), hLine6=plot(X,A(6,:),X,B(6,:));title(type{6});
     h7=subplot(2,6,7), hLine7=plot(X,A(7,:),X,B(7,:));title(type{7});
     h8=subplot(2,6,8), hLine8=plot(X,A(8,:),X,B(8,:));title(type{8});
     h9=subplot(2,6,9), hLine9=plot(X,A(9,:),X,B(9,:));title(type{9});
    h10=subplot(2,6,10), hLine10=plot(X,A(10,:),X,B(10,:));title(type{10});
    h11=subplot(2,6,11), hLine11=plot(X,A(11,:),X,B(11,:));title(type{11});
    h12=subplot(2,6,12), hLine12=plot(X,A(12,:),X,B(12,:));title(type{12});
1 comentario
Respuesta aceptada
  Star Strider
      
      
 el 7 de En. de 2017
        I would do it this way:
figure(1)
for k1 = 1:12
    subplot(2,6,k1)
    h{k1} = plot(X,A(k1,:),X,B(k1,:));title(type{k1});
end
NOTE — I do not have your data so this is UNTESTED CODE. It should work.
2 comentarios
  Star Strider
      
      
 el 8 de En. de 2017
				My pleasure!
I didn’t initially see that you had two sets of handles. The revised code would be:
figure(1)
for k1 = 1:12
    h{k1} = subplot(2,6,k1)
    hLine{k1} = plot(X,A(k1,:),X,B(k1,:));title(type{k1});
end
The handles to the subplots are in the cell array ‘h’, and to the plot in the cell array ‘hLine’.
Más respuestas (1)
  balandong
      
 el 6 de Abr. de 2020
        I would propose something like @strider, but using curly instead.
figure(1)
for k1 = 1:12
    h(k1) = subplot(2,6,k1)
    hLine(k1)= plot(X,A(k1,:),X,B(k1,:));title(type{k1});
end
The reason is for, in some circumstances, one would like to link axes among the subplot. And by using the curly braces,, the link axes can be simply achieved as follow
linkaxes(h,'x');
2 comentarios
  Priyank Sharma
 el 10 de Abr. de 2020
				However, trying your logic, it shows me subplot (2,1,1), while subplot (2,1,2) on different figures and not on the same figure. I want it should retain (2,1,1) and plot (2,1,2) on the same figure during execution in the loop. Kindly pls suggest.
Ver también
Categorías
				Más información sobre Subplots en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!