How to plot multiple graphs in one figure ?

조회 수: 1,784 (최근 30일)
sree chandana munnangi
sree chandana munnangi 2021년 6월 29일
댓글: Jonas/Ren 2025년 1월 16일
I have two codes. Each code has four graphs. I want to plot two graphs in one figure. For example: Dead nodes vs Round graph of two should be in one figure. In the same way other graphs also. I tried hold on function but still not getting. How to merge the two codes in order to get the graphs ?
  댓글 수: 3
Amanda Liu
Amanda Liu 2021년 6월 29일
편집: Amanda Liu 2021년 6월 29일
There are other ways but I'm using subplot.
figure(1)
subplot(2,1,1) % 2 rows, 1 column, first position
plot(r,STATISTICS.DEAD);
title('Dead Nodes vs Rounds')
xlabel 'Rounds';
ylabel 'Dead Nodes';
subplot(2,1,2) % 2 rows, 1 column, second position
plot(r,STATISTICS.ALLIVE);
title('Live Nodes vs Rounds')
xlabel 'Rounds';
ylabel 'Live Nodes';
figure(2)
subplot(2,1,1)
plot(r,STATISTICS.PACKETS_TO_BS);
title('Pkts to BS per round')
xlabel 'Rounds';
ylabel 'Pkts to BS ';
subplot(2,1,2)
plot(r,STATISTICS.PACKETS_TO_CH);
title('Pkts to CH per round')
xlabel 'Rounds';
ylabel 'Pkts to CH ';
Nghia Tran
Nghia Tran 2023년 2월 2일
thank u

댓글을 달려면 로그인하십시오.

채택된 답변

Adam Danz
Adam Danz 2023년 5월 20일
> I want to plot two graphs in one figure
Options are
subplot(m,n,i) creates an axes in the i^th position of an m-by-n grid.
tiledlayout(m,n) creates an m-by-n grid upon which axes can be added using nexttile.
See documentation links for details.
Benefits to using tiledlayout
The following features are great improvements available in tiledlayout.
  1. Flexible grid sizes (TileArrangment property)
  2. Control spacing (TileSpacing and Padding properties, Community Highlight)
  3. Row-wise or column-wise order of axes (TileIndexing property, Community Highlight)
  4. Global labels such as a title, subtitle, xlabel and ylabel (labels properties)
  5. Global legends, starting in R2020b (legend layout property, documentation example, more demos)
  6. Global colorbars, starting in R2020b (colorbar layout property, documentation example, demo)
  7. Specify the span of an axes within the grid using nexttile(span)
Demo
tcl = tiledlayout(2,3,'TileSpacing','compact');
nexttile
plot(magic(5))
axis tight
nexttile
scatter(rand(1,10), rand(1,10), 90, lines(10))
box on
nexttile([2,1])
imagesc(peaks(200))
nexttile([1,2])
histogram2(2*randn(1,1000), randn(1,1000), 'FaceColor', 'Flat')
cb = colorbar();
cb.Layout.Tile = 'south';
title(tcl, 'Global title')
xlabel(tcl, 'Global xlabel')
ylabel(tcl, 'Global ylabel')
  댓글 수: 1
Stefan Bendisch
Stefan Bendisch 2023년 8월 18일
Thank you. This function is a great help since it overcomes come limitations of subplot.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Devanuj Deka
Devanuj Deka 2021년 7월 12일
It is my understanding that you want to plot two graphs in one figure. You tried hold on but it didn't work.
It is not clear whether you want both plots in the same graph, or both plots in separate graphs but in the same window. Below are the possible solutions for either of those which you can try. I've taken dead nodes v/s rounds and alive nodes v/s rounds for the plots.
1) hold on, hold off – both dead and alive nodes in the same plot, same figure
figure(1)
plot(r,STATISTICS.DEAD);
hold on;
title('Nodes vs Rounds')
plot(r,STATISTICS.ALLIVE);
xlabel 'Rounds';
ylabel 'Nodes';
hold off;
legend('Dead Nodes','Live Nodes','Location','best');
Documentation: hold
2) subplot – dead nodes and alive nodes in two separate plots, but in the same figure
figure(1)
subplot(2,1,1)
plot(r,STATISTICS.DEAD);
title('Dead Nodes vs Rounds')
xlabel 'Rounds';
ylabel 'Dead Nodes';
subplot(2,1,2)
plot(r,STATISTICS.ALLIVE);
title('Live Nodes vs Rounds')
xlabel 'Rounds';
ylabel 'Live Nodes';
Documentation: subplot
  댓글 수: 1
Jonas/Ren
Jonas/Ren 2025년 1월 16일
Can this be done for three separate plots?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 2-D and 3-D Plots에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by