# How do I combine multiple plots in one graph?

4 949 views (last 30 days)

Show older comments

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.

##### 3 Comments

Mebin Cherian
on 25 Nov 2020

Hey, @tayyaba, I have to plot graphs of various iterations into the same graph, and the labels are written during each iteration. My problem is that the legend gets overwritten each time instead of being appended to the already existing legend. soln?

semilogy(snr,error(i));

Label=append('Error',error(i));

label(Label);

hold on;

### Accepted Answer

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:

##### 3 Comments

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

### More Answers (7)

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

##### 0 Comments

Raghuram
on 27 Mar 2014

##### 3 Comments

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)

##### 1 Comment

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

##### 2 Comments

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.

##### 1 Comment

Walter Roberson
on 17 Aug 2020

### See Also

### Community Treasure Hunt

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

Start Hunting!