How do I plot two subplots side by side in one figure?

220 ビュー (過去 30 日間)
NA
NA 2020 年 6 月 7 日
コメント済み: Star Strider 2021 年 12 月 20 日
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 件のコメント
Walter Roberson
Walter Roberson 2020 年 6 月 7 日
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.
NA
NA 2020 年 6 月 7 日
Thanks for letting me know. This will come useful to me. Cheers.

サインインしてコメントする。

採用された回答

Star Strider
Star Strider 2020 年 6 月 7 日
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 件のコメント
NA
NA 2020 年 6 月 7 日
That was straight forward, thanks again! I've been cranking my brain for hours over this. I'm fairly new to MATLAB, but I'll get there eventually. Cheers.
Star Strider
Star Strider 2020 年 6 月 7 日
As always, my pleasure!

サインインしてコメントする。

その他の回答 (1 件)

Vitek Stepien
Vitek Stepien 2021 年 12 月 18 日
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 件のコメント
Vitek Stepien
Vitek Stepien 2021 年 12 月 20 日
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!
Star Strider
Star Strider 2021 年 12 月 20 日
No worries!
.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSubplots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by