Plotting, like everything else in Matlab, is done with
vectors. Two `n`-dimensional vectors represent the
x- and y-coordinates, respectively. For example, the following
plots a line connecting the points `(1,2), (2,4), (3,6), (4,8), (5,10),
and (6,12)`:

>> plot( [1 2 3 4 5 6], [2 4 6 8 10 12] )

In order to plot a function, say on the interval `[0, 10]`,
the easiest way to do this is to:

>> x = linspace( 0, 10, 100 ); % 100 points evenly spaced between 0 and 10 >> y = sin(x); % sin of each of these points >> plot( x, y ) % a plot of sin(x) on [0, 10]

If you now create a second plot, it will overwrite the first plot:

>> plot( x, cos( x ) ) % a plot of cos(x) on [0, 10]

In order to see both plots, you must either plot them both at the same time, as in:

>> plot( x, sin( x ), x, cos( x ) ) % a plot of both sin and cos

or, you may use the command `hold`:

>> hold on >> plot( x, x.^2 / 100 ) % a plot of the function f(x) = x^2/100 >> hold off % turn holding back off

Up to now, each set of points is plotted as blue lines. Each plot can be given its own distictive look by modifying whether the points are plotted as (1) a line, as points, or both, (2) what type of line or point to use, and (3) the colour used.

These options are specified using a 3rd argument which is a string containing letters or symbols. The colour can be changed using one of the following letters:

'r' | red |

'g' | green |

'b' | blue |

'c' | cyan |

'm' | magenta |

'y' | yellow |

'w' | white |

'k' | black |

When plotting a line, the following can be used to change the appearence of the line:

'-' | solid |

':' | dotted |

'-.' | dash dotted |

'--' | dashed |

In order to plot points rather than lines, you may use any of the following symbols:

'.' | point |

'o' | circle |

'x' | an x |

'+' | plus |

'*' | star |

's' | square |

'd' | diamond |

'v' | triangle (down) |

'^' | triangle (up) |

'<' | triangle (left) |

'>' | triangle (right) |

'p' | pentagram |

'h' | hexagram |

Let's say you wish to plot a set of points with red dashed
lines. You would use the string `'r--'` as a third argument to
plot. If you wanted to plot data as magenta lines with squares
indicating the points, use `'ms-'`. Using only `'md'`
would plot only magenta diamonds without lines.

>> x = linspace( 0, 3, 10 ); >> y = x.^2; >> plot( x, y, 'r--' ) >> plot( x, y, 'ms-' ) >> plot( x, y, 'md' )

When plotting 3D points, you can use the `plot3` function
which takes as its arguments 3 vectors representing the `x`,
`y` and `z` coordinates.

The Matlab command:

>> plot3( [1 5 3 4], [2 9 7 6], [11 0 10 9] )

plots a line connecting the four points
`(1, 2, 11), (5, 9, 0), (3, 7, 10), (4, 6, 9)`.

As with the `plot` command, you can add options to
specify how the points should be plotted. The following example
plots the four points as magenta crosses:

>> plot3( [1 5 3 4], [2 9 7 6], [11 0 10 9], 'm+' )

Be sure to make note of the **rotate** arrow to the right
of the zoom in and zoom out magnifying glasses. By clicking on this
button, you can rotate the surface to see it from more than one
direction.

Given a matrix `A`, the Matlab command:

>> surf( A )

plots the points of `A` on a grid of the appropriate
size. For example, the following plots a symmetric matrix
with larger points near the origin of the matrix:

>> A = [15 3 2 1 3 10 4 1 2 4 7 0 1 1 0 2]; >> surf( A )

Colour, line style and point options are not available for
the `surf` function.

Let's say we're plotting a function `sin(x*y)` with
`x` ranging from 0 to 4 and `y` ranging from 3 to
7.

First, create vectors with a sufficient number of points:

>> x = linspace( 0, 4, 100 ); >> y = linspace( 3, 7, 100 );

The simplest way to do this is to create a `meshgrid`:

>> [X Y] = meshgrid( x, y );

This assigns `X` and `Y` two matrices, the first
with the `x` values copied down the columns, and the second
with the `y` values copied across the rows.

At this point, you can do:

>> mesh( x, y, sin( X .* Y ) )

Similarly, if you wanted to plot
`x^2*y - 5*x^2 - 3*x*y + 15*x + 2*y - 9` on the same ranges,
you could do:

>> mesh( x, y, X.^2.*Y - 5*X.^2 - 3*X.*Y + 15*X + 2*Y - 9 );

This is a good example to see how Matlab uses colour to show the height of the function. As you can see here, a rainbow of colours from blue to red is used, blue for lwo points, red for high, and the intermediate rainbow colours inbetween.

Again, remember to click on the rotation button to rotate the plot using the mouse.

To look more closely at what is happening, consider plotting
`exp(x+y)` [-3, 1] × [-2, 2] at the integers:

>> x = -3:1 x = -3 -2 -1 0 1 >> y = -2:2 y = -3 -2 -1 0 1 >> [X Y] = meshgrid( x, y ) X = -3 -2 -1 0 1 -3 -2 -1 0 1 -3 -2 -1 0 1 -3 -2 -1 0 1 -3 -2 -1 0 1 Y = -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 >> XpY = X + Y XpY = -5 -4 -3 -2 -1 -4 -3 -2 -1 0 -3 -2 -1 0 1 -2 -1 0 1 2 -1 0 1 2 3 >> expXpY = exp( XpY ) expXpY = 0.0067 0.0183 0.0498 0.1353 0.3679 0.0183 0.0498 0.1353 0.3679 1.0000 0.0498 0.1353 0.3679 1.0000 2.7183 0.1353 0.3679 1.0000 2.7183 7.3891 0.3679 1.0000 2.7183 7.3891 20.0855 >> mesh( x, y, expXpY )