MATLAB Answers

How do I combine multiple plots in one graph?

3,195 ビュー (過去 30 日間)
Tom
Tom 2011 年 12 月 10 日
Commented: Cleat Zeiler 2019 年 10 月 15 日
Hi, is there somewhere I can see some examples of scripts that result in multiple plots on one graph?
I know the 'hold' function is part of how to do it, but I'm very new to Matlab and I really need to see some full examples.
If someone could point me towards some that'd be great.

  2 件のコメント

tayyaba khurshid
tayyaba khurshid 2017 年 3 月 4 日
snr=0:1:15;
for ii=1:length(snr)
x=randint(1,100000); % Generating bits
y=pskmod(x,2); % Generating BPSK modulated data
ynoisy=awgn(y,snr(ii)); % Adding AWGN noise to data
z=pskdemod(ynoisy,2); % Demodulating
error(ii)=length(find(x-z~=0));
end
semilogy(snr,error)
hold
snr=0:1:15;
for ii=1:length(snr)
x=randint(1,100000); % Generating bits
y=pskmod(x,4); % Generating QPSK modulated data
ynoisy=awgn(y,snr(ii)); % Adding AWGN noise to data
z=pskdemod(ynoisy,4); % Demodulating
error(ii)=length(find(x-z~=0));
end
semilogy(snr,error)
grid
Yakubu Tsado
Yakubu Tsado 2018 年 7 月 26 日
You can use this code, but to have multiple plots, you need the subplot which is used as follows:
% Code used in my paper on design of composite riser
% Create a vertical bar chart using the bar function
figure
subplot(2,3,1) % add fourth plot in 2 x 3 grid
bar(1:18, [FibreControl' FibreAxial'], 1)
% Add title and axis labels
title('(a)')
xlabel('Composite Riser Layers')
ylabel('Stress in Fibre Direction (MPa)')
% Add a legend
legend('[1.58:1.62:1.86]', '[1.84:1.62:1.86]')
% Set the axis limits
set(gca, 'XTick', 1:18)
set(gca, 'XLim', [0,19])
set(gca, 'Fontsize', 8)
subplot(2,3,2) % add first plot in 2 x 3 grid
bar(1:18, [FibreControl' FibreAngled'], 1)
% Add title and axis labels
title('(b)')
xlabel('Composite Riser Layers')
ylabel('Stress in Fibre Direction (MPa)')
% Add a legend
legend('[1.58:1.62:1.86]', '[1.58:1.88:1.86]')
% Set the axis limits
set(gca, 'XTick', 1:18)
set(gca, 'XLim', [0,19])
set(gca, 'fontname','arial','fontsize',8,'linewidth',1)
subplot(2,3,3) % add second plot in 2 x 3 grid
bar(1:18, [FibreControl' FibreHoop'], 1)
% Add title and axis labels
title('(c)')
xlabel('Composite Riser Layers')
ylabel('Stress in Fibre Direction (MPa)')
% Add a legend
legend('[1.58:1.62:1.86]', '[1.58:1.62:1.60]')
% Set the axis limits
set(gca, 'XTick', 1:18)
set(gca, 'XLim', [0,19])
set(gca, 'Fontsize', 8)

サインイン to comment.

採用された回答

Chandra Kurniawan
Chandra Kurniawan 2011 年 12 月 10 日
編集済み: MathWorks Support Team 2018 年 11 月 9 日
To combine multiple plots in one graph, use the “hold on” command, such as:
plot(1:10)
hold on
plot(11:20)
hold off
For more information, see:

  3 件のコメント

Walter Roberson
Walter Roberson 2011 年 12 月 10 日
The alternative to "hold on" that would be applicable to this example is
plot(t,x,'r',t,y,'b')
Ina Panci
Ina Panci 2019 年 5 月 10 日
Hello, what other letters can we use if we have more than two functions to plot?
Cleat Zeiler
Cleat Zeiler 2019 年 10 月 15 日
This is the list from the help call:
Various line types, plot symbols and colors may be obtained with
plot(X,Y,S) where S is a character string made from one element
from any or all the following 3 columns:
b blue . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
m magenta * star (none) no line
y yellow s square
k black d diamond
w white v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram

サインイン to comment.

More Answers (5)

N Narayan rao
N Narayan rao 2016 年 9 月 25 日
編集済み: Walter Roberson 2017 年 7 月 15 日
x = -3:0.1:3;
y1 = sin(x);
y2 = cos(x);
y3= tan(x);
y4=1./cos(x);
figure
subplot(2,2,1)
plot(x,y1)
title('Subplot 1')
subplot(2,2,2)
plot(x,y2)
title('Subplot 2')
subplot(2,2,3)
plot(x,y3)
title('Subplot 3')
subplot(2,2,4)
plot(x,y4)
title('Subplot 4')

  0 件のコメント

サインイン to comment.


Tom
Tom 2011 年 12 月 10 日
Thanks, that's perfect.

  0 件のコメント

サインイン to comment.


Raghuram
Raghuram 2014 年 3 月 27 日
Could you please tell me the same with scatter plot command? That is, to plot multiple scatter plots in one figure?

  3 件のコメント

Prasad Kalane
Prasad Kalane 2015 年 12 月 11 日
x=rand(2,10);
scatter(x(1,:),x(2,:),'r');
hold on
x=rand(2,10);
scatter(x(1,:),x(2,:),'g');
hold on
x=rand(2,10);
scatter(x(1,:),x(2,:),'b');
hold on
x=rand(2,10);
scatter(x(1,:),x(2,:),'c');
You can plot multiple plot just use "hold on" command
MOHAMMAD YASIR ALI
MOHAMMAD YASIR ALI 2017 年 7 月 13 日
can I get best fit line from this method?
Walter Roberson
Walter Roberson 2017 年 7 月 15 日
"can I get best fit line from this method?"
Best fit lines tend to imply an ordering to the data, but scatter plots tend to imply the data might not be ordered in a way that is compatible with fitting.
But yes, if you have polynomial coefficients for your fit, such as coefficients generated using polyfit(), then you can use polyval() to interpolate values, and you can "hold on" and plot() the values.

サインイン to comment.


Cortney Marschner
Cortney Marschner 2016 年 10 月 8 日
編集済み: Walter Roberson 2017 年 7 月 15 日
How do I plot multiple graphs on the same graph using this code?:
hold off
[x, y] = meshgrid(0:0.2:10, 0:0.2:6);
X = x(1,1:51);
dx = ones(size(x));
dy = x;
quiver(x, y, dx, dy)
axis tight
hold on
plot(X, 1+X.^2/2)

  1 件のコメント

Walter Roberson
Walter Roberson 2017 年 7 月 15 日
That code already plots multiple lines on the same plot. However, the y range of the second one is much larger than the y range of the first, so the second one takes up most of the space.

サインイン to comment.


utkarsh singhvi
utkarsh singhvi 2018 年 4 月 17 日
command to plot multiple function on one graph

  0 件のコメント

サインイン to comment.

サインイン してこの質問に回答します。


Translated by