Module 3: PLOTTING

Lesson 3.2 – Plot Formatting

Learning Objectives

  1. add axis labels to MATLAB plots,

  2. add a legend to MATLAB plots,

  3. add a title to MATLAB plots,

  4. add special characters to text in MATLAB plots,

  5. improve the overall look of MATLAB plots.

  

How can my MATLAB graph look nicer?

As you can tell from Lesson 3.1, developing graphs can prove to be important for interpreting data. The ability to make those graphs easier to read and aesthetically pleasing is equally important. In this lesson, you will learn several techniques to make a MATLAB plot more readable and easier to follow. This section will cover the functions and commands on how to make a legend, title, axis labels, and place a grid onto a plot. Also covered are the use of special fonts and characters and how to change the axis markings.

  

What are some terms I should know for plots?

Figure 1 shows the MATLAB naming convention for plotting. Most of the nomenclature is common sense and similar to other software, but it is important to know to understand how to change the different properties.

In this lesson, we will cover the two most commonly used groups of properties that define how plotted graphics look in MATLAB. Those are as follows:

  • Line Properties define chart line appearance and behavior: for example, the line style and thickness.

  • Axis Properties define axes appearance and behavior: for example, axis limits, title, and legend.

The properties are not mandatory as you could see from the last lesson. In other words, you could make a plot without MATLAB requiring you to have a title, line width, axis labels, etc.

Figure 1: A MATLAB plot with common plot properties annotated.

  

How can I change the color and style of lines and markers on a plot?

MATLAB provides many different options to change how your plots look. You can see some of the common options in Tables 1, 2, and 3 below. Example 1 uses some of these options to customize how a figure appears.

Table 1: Various marker plotting styles.

Desired Style Syntax Example Usage
Circle 'o' plot(x,y,'o')
Square 's' plot(x,y,'s')
Asterisk '*' plot(x,y,'*')
Cross '+' plot(x,y,'+')
Small point '.' plot(x,y,'.')
Diamond 'd' plot(x,y,'d')
Five-pointed star 'p' plot(x,y,'p')

Table 2 shows different line styles used to represent the function in the generated plot. To change the color of a line or data point, use the parameters given in Table 3. Note that these color and line style options can be used in the same parameter input to the plot() function. For example, we can instruct MATLAB to make the plot a dotted red line with plot(x,y,'r:').

Table 2: Various line plotting styles.

Desired Line Style Syntax Example Usage
solid line (default) '-' plot(x,y,'-')
dashed line '–' plot(x,y,'–')
dotted line ':' plot(x,y,':')
dash-dot line '-.' plot(x,y,'-.')

Table 3: Various color options for data points and lines.

Desired Color Syntax Example Usage
blue (default) 'b' plot(x,y,'b')
red 'r' plot(x,y,'r')
black 'k' plot(x,y,'k')
yellow 'y' plot(x,y,'y')
magenta 'm' plot(x,y,'m')
green 'g' plot(x,y,'g')
cyan 'c' plot(x,y,'c')

  

How can I make the function and points on the graph look nicer?

There are many ways to display the desired function(s) and/or data points on a graph. To name a few, modifications include the change of the following - color, size, shape, line type, and outline of both the points and function. Typing doc plot in the Command Window will yield tables of information and codes that can be used to modify your graph.

Line Parameter: Line width of a curve (function)
'LineWidth'

Parameter Value:
Any positive integer – the larger the number the thicker the line width

Example Usage:
plot(x,y,'LineWidth',2) (read more about code placement below)

Line Parameter: Size of a data point symbol
'MarkerSize'

Parameter Value:
Any positive integer – the larger the number the larger the marker size

Example Usage:
plot(x,y,'MarkerSize',6) (read more about code placement below)

Both the LineWidth and MarkerSize parameters must be used in conjunction with the plot() function as they are parameters of this function; therefore, they must go inside the plot() function. To illustrate this, Example 1 shows both the m-file and generated figure using these parameters.

Example 1

Plot the function \(y=2.1x+4.4\) and the following data set on the same plot. Data pairs to plot are: (0, 4.12), (2, 8.6), (4, 11.5), (5, 15.3), (7, 18.0), (8.5, 21.25). Plot the function within the domain of 0 to 10 with an interval between the points of 0.1. Use blue points (markers) for the data set with a specified marker size of 6 and a red dotted line for the function with a line width of 2. Include a legend, title, and axis labels on the plot. Use bold font for the title and italicize the axis labels.

Solution

Figure 2: The figure output by the code in Example 1.

  

How can I put a title and axis labels on my plot?

Whenever you are making a plot, you should always use a title and axis labels. Even if it is the world’s simplest plot, these things are important. MATLAB contains several preprogrammed functions that allow the user to add a figure title and axis labels to a graph.

Example 2 shows an m-file with the corresponding figure using the title(),xlabel(), and ylabel() functions.

  

How can I add a legend to my plot?

The function to add a legend to a plot is legend(). In the m-file, the legend() function must be placed after the last plotting call. The order in which the descriptions should appear in the legend is the same as the order in which the functions/points are plotted. When making a legend, double-check that the descriptions match with what MATLAB is plotting. MATLAB will automatically place the line style of the function/point with the description provided by the user for each object in the legend.

Example 2 shows an example m-file of how to use a legend in a MATLAB-generated figure. Notice the use of the 'location' parameter to manually set the location of the legend on the plot. The parameter ‘NW’ (northwest), which must directly follow it, specifies where we want the legend to by on our plot. The locations are given as cardinal directions: north, south, east, west, etc.

Note in the m-file in Example 2, the placement of the LineWidth and MarkerSize parameters inside the plot() function. Also, note the placement of the title(), xlabel(), ylabel(), and legend() functions, which are after the plot() function in the m-file.

  

How can I add a grid to my graph?

Using a grid in a figure is a helpful tool to make a graph more readable. However, using a grid is not always useful. In some cases, a grid can be counter-productive because the grid lines can crowd a plot. Placing a grid is very similar to using a title or axis label, just type grid on. Just like hold off, you can also use grid off.

Example 2

Plot the function \(y=2.1x+4.4\) and the following data set on the same plot. Data pairs to plot are: (0, 4.12), (2, 8.6), (4, 11.5), (5, 15.3), (7, 18.0), (8.5, 21.25). Plot the function in the domain of 0 to 10 with an interval between the points of 0.1. Use blue points (markers) for the data set with a specified marker size of 6 and a red dotted line for the function with a line width of 2. Include a legend, title, and axis labels on the plot. Make the title in bold font and axis labels in italics.

Solution

Note: This is an extension of the solution given in Example 1.

Figure 3: The figure output by the code in Example 2.

Similar to the title or axis label functions, the grid command needs to be placed after the plot() function in m-file. If hold on is used, the grid command should be directly after it as shown in Example 2.

  

How can I add special characters in my axis labels and title?

It may be necessary to add superscripts and subscripts to the item description(s) to the plot title, legend and/or labels. The syntax for superscripts and subscripts are placed where needed in the title(), xlabel(), ylabel(), and legend() functions. What is to be placed in the desired superscript or subscript must be inside braces {}, and the script character is placed before the braces. The character _ is used for subscripts and the character ^ is used for superscripts. Similarly, one may use similar script statements as shown below for the axis labels, legends, etc. For example, to display, \(\displaystyle y_1=x^3\) in the title of a figure, one would type:

plot(x,y)
title('y_{1}= x^{3}')

The use of Greek letters or bold, italic and regular font may also be useful when making a graph. These can be added using a backslash followed by the desired font variation. To name a few, add bold font by using \bf, italic font by using \it, and regular font by using \rm followed by the desired text. To display Greek letters, one can use \greek_letter (see Table 4 and Example 3).

Table 4: Some of the special characters to be used with figures. The symbols can be used with any of the functions given as examples and more.

Symbol Syntax Example Usage
\(\alpha\) \alpha title('\alpha')
\(\omega\) \theta xlabel('\theta')
\(\pi\) \pi ylabel('\pi')
\(\sigma\) \sigma legend('\sigma')
\(\tau\) \tau xlabel('\tau')
\(\pm\) \pm ylabel('\pm')
\(\div\) \div legend('\div')

For example, to place, \(\mathbf{c=2^*\pi^*r}\) in the title of a figure (notice the bold font), one would type title('\bfc = 2*\pi*r'). For a more complete list of special characters that can be used with your figures, conduct a MATLAB help search (keyword: Text Properties). Example 2 shows the use of a few special font styles, including bold font and subscripts in a plot.

  

How can I change axis limits and tick labels?

MATLAB makes it easy to adjust the limits of your axes to fit your data. The xlim() function adjusts the displayed domain of the horizontal axis, while the ylim() function adjusts the displayed range of the vertical axis.

For some data, such as the sinusoidal wave shown in Example 3, it can be useful to change the tick increments. xticks() and yticks() redefine the tick increment. That is, how far apart the ticks are on the axis. The corresponding tick labels can be changed with the xticklabels() and yticklabels() functions. These will allow you to change the tick label to any custom text compatible with MATLAB.

Example 3

Plot the function \(f(t)=0.3\sin(t)\) for time values of 0 to \(2\pi\) in steps of 0.2. Set the x-axis ticks and tick labels to be from \(0\) to \(2\pi\) in steps of \(\pi/2\). Be sure to use the symbol (\(\pi\)) rather than just writing “pi”.

Solution

Figure 4: Plot with custom axis limits and axis labels on the horizontal axis (output for Example 3).

  

Lesson Summary of New Syntax and Programming Tools

Task Syntax Example Usage
Add a title to plot title() title('Your title')
Add x-axis label to plot xlabel() xlabel('Your x label')
Add y-axis label to plot ylabel() ylabel('Your y label')
Place a legend on the plot legend() legend('plot1','plot2')
Place a grid on the plot grid grid on
Set custom line width for a data set LineWidth plot(x,y,'LineWidth',5)
Set a custom marker size for a data set MarkerSize plot(x,y,'MarkerSize',5)
Set custom x limit for plot xlim() xlim([lowerX,upperX])
Set custom y limit for plot ylim() ylim([lowerY,upperY])
Set custom x ticks for plot xticks() xticks([minTick,maxTick])
Set custom y ticks for plot yticks() yticks([minTick,maxTick])
Set custom x tick labels for plot xticklabels() xticklabels({'x1','x2'})
Set custom y tick labels for plot yticklabels() yticklabels({'y1','y2'})

Multiple Choice Quiz

(1). The function to add a title to a plot is

(a)  ptitle()

(b)  t()

(c)  title()

(d)  label()

  

(2). The MarkerSize parameter

(a)  adjusts the overall size of the figure font.

(b)  adjusts the size of plotted points.

(c)  changes the aspect ratio of the graph size.

(d)  changes the thickness of plotted lines.

  

(3). To add a subscript, use the character(s)

(a)  n{}

(b)  n()

(c)  _{}

(d)  _()

  

(4). Which of the following will show the plot title in italics?

(a)  title('\it This is a plot title.')

(b)  title('it{This is a plot title.}')

(c)  title('it(This is a plot title.)')

(d)  title('This is a plot title.\it')

  

(5). Two sets of data points and a function, coded in the order, data_set_1, data_set_2, and function_1, are plotted. The correct code sequence to create the appropriate legend is

(a)  legend('data set 1','data set 2','function 1')

(b)  legend('function 1','data set 2','data set 1')

(c)  legend(data set 1, data set 2, function 1)

(d)  Code sequence does not matter.

Problem Set

(1). A rocket is horizontally strapped to the top of a sled and ignited. The position of this contraption is given as a function of time t (sec) by

\[\displaystyle s(t)=\frac{3}{50}t^3+\frac{7}{30}t^2-5t\ \ \text{(ft).}\]

Plot the position of the sled in MATLAB from 0 to 60 seconds. Add a title (bold font) and axis labels (italic font) to the plot. Remember to follow the guidelines given in Lesson 3.1 for raising a vector to a power when plotting.

  

(2). Plot the lift and drag forces exerted on an airfoil as a function of velocity. Use velocity (v) values from 0 to 45 m/s on a log-linear plot (log-scale on the y-axis). The working fluid density (\(\rho\)) is 1.423 kg/m3, the exposed airfoil area (A) is 129 m2, and the coefficients of drag (\(C_D\)) and lift (\(C_L\)) are 0.178 and 0.896, respectively. Recall that the equations for drag and lift forces are

\[F_D=\frac{1}{2}C_D\ A\ \rho\ V^2,\]

\[F_L=\frac{1}{2}C_L\ A\ \rho\ V^2,\]

Your plot should display an appropriate legend, title, axis labels, and units. The line width of the two lines should be adequately sized. Remember to follow the guidelines given in Lesson 3.1 for raising a vector to a power when plotting.

  

(3). The required specific input work (kJ/kg) for an insulated refrigerant compressor is found to be,

\[w_{in} = h_{out} - h_{in}\]

where \(h_{out}\) and \(h_{in}\) have units of kJ/kg and correspond to the enthalpies at the exit and inlet of the compressor, respectively. The inlet enthalpy is given as a constant value of 278.76 kJ/kg. On the other hand, exit enthalpy will change as a function of exit pressure and temperature. The following data is collected:

\[\displaystyle \text{Exit pressure (bar)} = \left [1.0\ \ 1.4\ \ 1.8\ \ 2.0\ \ 2.4\ \ 2.8\ \ 3.2\right]\]

\[\displaystyle h_{out}\left( \frac{kJ}{kg} \right) =\left[278.76\ \ 286.96\ \ 295.45\ \ 304.50\ \ 313.49\ \ 332.60\ \ 342.21\right]\]

Plot the input work as a function of the exit pressure, and show the data as points (use circles) on a standard linear plot. Add a figure title and axis labels, use increased marker size, and show a grid.

  

(4). Torque, T, is given by \(T=F\cdot r\) where F is the force and r is the radius (moment arm). Create two plots on two separate figures. In one figure, plot the torque vs. radius. Use a constant value of F = 5 N and radius values of 0 to 10 m with a step size of 0.2. In the second figure, plot the force vs. radius.

Let the torque be a constant value of 5 Nm and the same radius values as the first plot. You can rearrange the torque equation to solve for force: \(\displaystyle F=\frac{T}{r}\). Include a title, axis labels, and a grid on both figures. Remember to follow the guidelines given in Lesson 3.1 for a vector in the denominator when plotting.

  

(5). Given the data set below for stress and strain for a uniaxial text on a unidirectional composite material, create a 2D line plot of stress vs. strain. Use a solid, green line with an appropriate line width. Also include a grid, axis labels, axis limits, and units to improve the appearance and effectiveness of your plot.

Table A: Stress vs. strain for a composite material.

Stress (MPa) Strain (%)
0 0
306 0.183
612 0.36
917 0.5324
1223 0.702
1529 0.867
1835 1.0244
2140 1.1774
2446 1.329
2752 1.479
2767 1.5
2896 1.56