3.879 views (last 30 days)

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.

Chandra Kurniawan
on 10 Dec 2011

Edited: MathWorks Support Team
on 9 Nov 2018

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:

Walter Roberson
on 10 Dec 2011

The alternative to "hold on" that would be applicable to this example is

plot(t,x,'r',t,y,'b')

Ina Panci
on 10 May 2019

Hello, what other letters can we use if we have more than two functions to plot?

Cleat Zeiler
on 15 Oct 2019

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

N Narayan rao
on 25 Sep 2016

Edited: Walter Roberson
on 15 Jul 2017

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')

Raghuram
on 27 Mar 2014

Prasad Kalane
on 11 Dec 2015

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

Walter Roberson
on 15 Jul 2017

"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.

Cortney Marschner
on 8 Oct 2016

Edited: Walter Roberson
on 15 Jul 2017

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)

Walter Roberson
on 15 Jul 2017

Emil Latypov
on 16 Apr 2020

Edited: Image Analyst
on 16 Apr 2020

In chemistry, the pH of an aqueous solution is a measure of its acidity. The pH scale ranges from 0 to 14, inclusive. A solution with a pH of 7 is said to be neutral, a solution with a pH greater than 7 is basic, and a solution with a pH less than 7 is acidic.

I did it, but my prof said it is not professional. How to do it professionally?

%% Chapter 8 Question 19

%% This script cteats the a vector structure mysol with various solutions

%% and their pH-values and adds another field mysol.acidity.

clear

clc

format compact

mysol(3) = struct('name','bleach','pH',12);

mysol(1) = struct('name','juce','pH',5);

mysol(2) = struct('name','milk','pH',7);

acidity = myacidity(mysol);

for i = 1:3

mysol(i).acidity = strcat(acidity(i,:));

end

mysol

mysol.acidity

function acidity = myacidity(mysol)

% This function receives a vector structure with various solutions and

% their pH-values and determines acidity of solutions.

len = length(mysol);

acidity(len,:) = blanks(7);

for i = 1:len

if mysol(i).pH < 7

acidity(i,:) = 'acidic ';

elseif mysol(i).pH > 7

acidity(i,:) = 'basic ';

else

acidity(i,:) = 'neutral';

end

end

end

Image Analyst
on 16 Apr 2020

Walter Roberson
on 17 Apr 2020

The line

mysol(i).acidity = strcat(acidity(i,:));

should probably be rewritten in terms of strtrim()

Sankirna D. Joge
on 17 Aug 2020

One must use hold on command after every plot,

plot(x1,y1);

hold on

plot(x2,y2);

hold on

plot(x3,y3);

hold off

This will give output as three plots on a same graph.

Walter Roberson
on 17 Aug 2020

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

Start Hunting!
## 3 Comments

## Direct link to this comment

https://nl.mathworks.com/matlabcentral/answers/23591-how-do-i-combine-multiple-plots-in-one-graph#comment_433968

⋮## Direct link to this comment

https://nl.mathworks.com/matlabcentral/answers/23591-how-do-i-combine-multiple-plots-in-one-graph#comment_433968

## Direct link to this comment

https://nl.mathworks.com/matlabcentral/answers/23591-how-do-i-combine-multiple-plots-in-one-graph#comment_593667

⋮## Direct link to this comment

https://nl.mathworks.com/matlabcentral/answers/23591-how-do-i-combine-multiple-plots-in-one-graph#comment_593667

## Direct link to this comment

https://nl.mathworks.com/matlabcentral/answers/23591-how-do-i-combine-multiple-plots-in-one-graph#comment_1160058

⋮## Direct link to this comment

https://nl.mathworks.com/matlabcentral/answers/23591-how-do-i-combine-multiple-plots-in-one-graph#comment_1160058

Sign in to comment.