How do I plot two subplots side by side in one figure?
252 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
NA
el 7 de Jun. de 2020
Comentada: Star Strider
el 20 de Dic. de 2021
Hello,
I'd like to plot two subplots side by side in one figure. I currently have two subplots in a for loop each, and from what I've read online, MATLAB doesn't allow to plot a subplot within a subplot. Is there another way of plotting these subplots alongside each other?
suplotTitle = {'0.4mA', '0.6mA', '0.8mA', '1.2', '1.6mA'};
f1=figure
for ii=1:5
subplot(5,1,ii);
b1 = bar(conRR(2:end,1), conRR(2:end, ii+1));
b1.FaceColor = '#D95319';
b1.EdgeColor = 'none';
xticks(1:1:16);
ylim([0 80]);
title(suplotTitle{ii})
end
f2=figure
for ii=1:5
subplot(5,1,ii);
b2 = bar(b9RR(2:end,1), b9RR(2:end, ii+1));
b2.FaceColor = '#0072BD';
b2.EdgeColor = 'none';
xticks(1:1:16);
ylim([0 80]);
title(suplotTitle{ii})
end
I have tried converting the subplots into images using the following code:
F1 = getframe(f1);
[X1, Map1] = frame2im(F1);
F2 = getframe(f2);
[X2, Map2] = frame2im(F2);
and then plotting a subplot with the images:
figure;
subplot(1,2,1), imshow(X1,Map1)
subplot(1,2,2), imshow(X2,Map2)
However, the quality of the figure (images) are not that great.
Would appreciate any feedback to plot the subplots another way or to perhaps improve the quality of the images.
Thanks.
2 comentarios
Walter Roberson
el 7 de Jun. de 2020
MATLAB doesn't allow to plot a subplot within a subplot.
MATLAB permits subplots within uipanel() . Each uipanel() acts as a frame that can contain multiple axes, with it being possible to position the uipanels independently of each other.
Respuesta aceptada
Star Strider
el 7 de Jun. de 2020
Try this:
conRR = [(0:10).' rand(11,5)*80]; % Create Matrix
b9RR = [(0:10).' rand(11,5)*80]; % Create Matrix
f1=figure
for ii=1:5
subplot(5,1,ii);
b1 = bar(conRR(2:end,1), conRR(2:end, ii+1));
b1.FaceColor = '#D95319';
b1.EdgeColor = 'none';
xticks(1:1:16);
ylim([0 80]);
title(suplotTitle{ii})
end
f2=figure
for ii=1:5
subplot(5,1,ii);
b2 = bar(b9RR(2:end,1), b9RR(2:end, ii+1));
b2.FaceColor = '#0072BD';
b2.EdgeColor = 'none';
xticks(1:1:16);
ylim([0 80]);
title(suplotTitle{ii})
end
That appears to do what you want it to do.
4 comentarios
Más respuestas (1)
Vitek Stepien
el 18 de Dic. de 2021
Try using subplot with 2 columns, iand see if that does what you need.
Instead of:
subplot(5,1,ii);
Use:
subplot(5,1,ii);
Then you can get away with just a single for loop, using:
subplot(5,1,2*ii-1); % For conRR plots
subplot(5,1,2*ii); % For b9RR plots
3 comentarios
Vitek Stepien
el 20 de Dic. de 2021
Oh right, sorry - it was hidden down the comments and I missed it before, I only saw the top comment which didn't have that!
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!