Tutorial Video
Introduction
This will take you through the basics of performing a 2D Plot in MATLAB.
The figure Function
The function
figure
Will create a new figure using the lowest unused positive integer. e.g. if no additional windows were previously open it will create Figure 1.
If an input argument is selected. e.g.
figure(100)
MATLAB will instead create Figure 100.
If an input argument is selected of a figure that exists. e.g.
figure(1)
Then MATLAB will reselect Figure 1. Any sub-sequential commands will apply to that Figure.
Getting the Data From Excel
Copying Each Column to a New Variable
We have the data we want to plot in an Excel Spreadsheet. Although it is pretty easy to create Variables by typing it in, in MATLAB we will create a new variable call it v and copy the first column to it.
We will then do the same with the second column but this time calling it v:
We can dock Figure(1) by pressing the Dock Button:
I want it snapped to the right of Variables, not below them so I will drag it to the right:
Now the figure is docked:
Since I have x and y data in the form of t and v I can use the plot command:
plot(t,v)
We can also select the Columns we want to plot from a Variable that is a Matrix or alternatively if or input data is in the form of a Table we can select the Table Variables (Columns) to Plot.
Additional Input Arguments
For the Plot Function, many of the additional input arguments come in pairs. The first value selects the setting to be changed and the second value selects the value for such a setting to be changed to. Unlike the names of functions or variables when the inputs are characters, they are not case sensitive.
LineWidth
These input arguments specify the thickness of the line. The first value is a string of characters and the second value is a scalar.
plot(t,v,'LineWidth',5)
Color
This is spelt using English (U.S.). The English (U.K.) spelling will not work.
These input arguments specify the colour of the line. The first value is a string of characters and the second value for primary and secondary colours can either be a string of characters as the full colour name or it's abbreviation. Alternatively it can be specified as a [R,G,B]
value. For this the RGB values are normalised between 0 and 1. In many other applications they range between 0 and 255.
plot(t,v,'Color','Red')
plot(t,v,'Color','R')
plot(t,v,'Color',[1,0,0])
LineWidth
As these input arguments come in pairs. It doesn't matter if we specify the Color first or the LineWidth first:
plot(t,v,'Color',[255/255,192/255,0/255],'LineWidth',5)
plot(t,v,'LineWidth',5,'Color',[255/255,192/255,0/255])
It can also be helpful using ...
to split the code over multiple lines. That way you can easily track the pairs:
plot(t,v,...
'Color',[255/255,192/255,0/255],...
'LineWidth',5)
The lines of code above give:
LineStyle
MATLAB also has a number of different types of lines, by default the line is a solid line however another two input arguments can be input to change these:
Once again 'LineStyle'
and '--'
are both strings of characters and must be enclosed in ' '
plot(t,v,...
'Color',[255/255,192/255,0/255],...
'LineStyle','--',...
'LineWidth',5)
Marker
Markers can also be added to the line using two more additional input arguments:
plot(t,v,...
'Color',[255/255,192/255,0/255],...
'LineStyle',':',...
'LineWidth',5,...
'Marker','s')
Once again 'Marker'
and 's'
are both strings of characters and must be enclosed in ' '
MarkerSize
The markers above were quite small, they are hard to read, this can be resolved by using another two additional input arguments:
plot(t,v,...
'Color',[255/255,192/255,0/255],...
'LineStyle',':',...
'LineWidth',5,...
'Marker','s',...
'MarkerSize',20)
Once again 'MarkerSize'
is a string and must be enclosed in ' '
and 20 is a scalar.
MarkerEdge and MarkerFace
The Marker does not need to be the same colour as the line. We can specify both the Edge and the Fill of the marker with another colour using another four input arguments. Once again 'MarkerFace'
and 'MarkerEdge'
are both strings and must be enclosed in ' '
. Each of them has a paired input argument, which uses the same notation as the line color (see above), I will use the [r,g,b]
row vector notation.
plot(t,v,...
'Color',[255/255,192/255,0/255],...
'LineStyle',':',...
'LineWidth',5,...
'Marker','s',...
'MarkerSize',20,...
'MarkerEdge',[0/255,176/255,80/255],...
'MarkerFace' ,[112/255,48/255,160/255])
Short Hand
For learning pairing the inputs may help for using the plot function but it is quite useful to use the abbreviated notation for some of the most commonly used inputs.
plot(t,v, 'color','b','LineStyle',':','Marker','s')
plot(t,v,'b:s')
Axes
For the axes we use the function set
with the input argument gca
(get current axes):
set(gca)
Limits
To change the x axis limits the additional input argument 'XLim'
in the for of a string of characters is matched by a 2 by 1 row vector consisting of the upper and lower x limits respectively. Likewise we have the additional input argument 'YLim'
matched input argument is a 2 by 1 column vector (if a row vector is input, it will automatically be adjusted) this time consisting of the upper and lower y limits respectively.
set(gca,...,
'XLim',[10,20],...
'YLim',[400,500])
Scale
We can also use the additional input argument 'XLim'
to set the scale on the x axis using the accompanying input argument 'Lin'
for Linear (default) or 'Log'
for logarithmic scale. For the y scale we use 'YLim'
set(gca,...,
'XLim',[10,20],...
'YLim',[100,500],...
'XScale','Lin',...
'YScale','Log')
FontSize
If we wish to change the Font Size on the axes we can use the additional input argument 'FontSize'
followed by a scalar input:
set(gca,...,
'XLim',[10,20],...
'YLim',[100,500],...
'XScale','Lin',...
'YScale','Log',...
'FontSize',20)
Grid
One can enable the grid by using the function grid
with the input argument 'on'
grid('on')
We can have gridlines with minor gridlines using the input argument 'minor'
grid('minor')
One can disable the grid by using the function grid
with the input argument 'off'
grid('off')
Because these are commonly used, they also in the form:
grid on
grid minor
grid off
Axis Labels and Title
There are three functions to label the x-axis, y-axis and the figure title these are:
xlabel('time (s)')
ylabel('speed (m/s)')
title('Rocket Projectile')
Note how the brackets enclosed within the ' '
are treated as text and not as part of the code.
If alternatively one has a cell array with the labels, these can also be input as axis labels:
mytestlabels={'test time (s)','test speed (m/s)','Rocket Projectile'}
xlabel(mytestlabels(1))
ylabel(mytestlabels(2))
title(mytestlabels(3))
Legend
The graph is missing a legend we can add one using the following function
legend('Rocket1',...
'Location','NorthWest')
legend('Rocket1',...
'Location','SouthEast')
For the location we use the compass points, these are usually within the chart area but we can also specify for them to be outside.
Hold
So far we have the following code.
figure(1)
plot(t,v,...
'Color',[255/255,192/255,0/255],...
'LineStyle',':',...
'LineWidth',5,...
'Marker','s',...
'MarkerSize',20,...
'MarkerEdge',[0/255,176/255,80/255],...
'MarkerFace' ,[112/255,48/255,160/255])
set(gca,...
'XLim',[10,20],...
'YLim',[100,500],...
'FontSize',20)
xlabel('time (s)')
ylabel('speed (m/s)')
title('Rocket Projectile')
grid('minor')
legend('Rocket1',...
'Location','SouthEast')
This gives us the following:
Now supposing we want to create a plot of v vs t and also a second Rocket that is twice as fast 2*v vs t:
figure(1)
plot(t,v,...
'Color',[255/255,192/255,0/255],...
'LineStyle',':',...
'LineWidth',5,...
'Marker','s',...
'MarkerSize',20,...
'MarkerEdge',[0/255,176/255,80/255],...
'MarkerFace' ,[112/255,48/255,160/255])
plot(t,2*v,...
'Color',[192/255,0/255,0/255],...
'LineStyle',':',...
'LineWidth',5,...
'Marker','s',...
'MarkerSize',20,...
'MarkerEdge',[0/255,176/255,80/255],...
'MarkerFace' ,[112/255,48/255,160/255])
set(gca,...,
'FontSize',20)
xlabel('time (s)')
ylabel('speed (m/s)')
title('Rocket Projectile')
grid('minor')
legend('Rocket1','Rocket2'...
'Location','SouthEast')
This code overwrites the data on Figure 1 opposed to adding a second Line Plot.
To add additional lines to the Figure 1 opposed to writing over them we need to use the hold
function with the input argument 'on'
. We should use the hold
function with the input argument 'off'
to release after we've finished plotting.
figure(1)
plot(t,v,...
'Color',[255/255,192/255,0/255],...
'LineStyle',':',...
'LineWidth',5,...
'Marker','s',...
'MarkerSize',20,...
'MarkerEdge',[0/255,176/255,80/255],...
'MarkerFace' ,[112/255,48/255,160/255])
hold('on')
plot(t,2*v,...
'Color',[192/255,0/255,0/255],...
'LineStyle',':',...
'LineWidth',5,...
'Marker','s',...
'MarkerSize',20,...
'MarkerEdge',[0/255,176/255,80/255],...
'MarkerFace' ,[112/255,48/255,160/255])
hold('off')
set(gca,...,
'FontSize',20)
xlabel('time (s)')
ylabel('speed (m/s)')
title('Rocket Projectile')
grid('minor')
legend('Rocket1','Rocket2'...
'Location','NorthWest')
Because these are commonly used, there is an abbreviated form:
hold on
hold off