Plotting a function of one variable

Let’s study one of the most common tasks in the visualization of applied mathematics: plotting a function on a real variable. Matlab’s default settings often need some tuning for a specific purpose.

The example is very simple: plot the sine function in the interval from zero to two pi. A straightforward Matlab code for doing this reads

x = linspace(0,2*pi);
plot(x,sin(x))

Now there is a lot more background structure in the plot than there is content relating to the actual sine function we want to illustrate. I’ll follow Edward Tufte’s advice and remove some ink that bears no data (by typing box off). Also, the natural limit for the horizontal axis is [0,2*pi] instead of Matlab’s default [0,7].

figure(2); clf 
x = linspace(0,2*pi);
plot(x,sin(x))
xlim([0, 2*pi])
box off

There seems to be an odd cut in the maximum of the function because the image has been truncated too low. This can be fixed by extending the vertical axis limit slightly using the ylim command.

I find Matlab’s default blue plot color rather boring, so I’ll change it to red. Also, I plot the function with a thicker line to make it stand out of the background structure.

figure(3); clf
x = linspace(0,2*pi);
plot(x,sin(x),’r’,’linewidth’,2);
xlim([0, 2*pi])
ylim([-1, 1.02])
box off

Just for fun, I will change the plot color to something tailored. Here the RGB values are R=180, G=60 and B=0, but you can change it to any color of your liking. The separate xlim and ylim commands above can be combined into one axis command.

figure(4); clf
x = linspace(0,2*pi);
p = plot(x,sin(x),’linewidth’,2);
set(p,’color’,[242 69 0]/255)
axis([0, 2*pi, -1, 1.02])
box off

Next I modify the tick marks of both the horizontal and the vertical axes. Namely, the x-values 0,1,2,…,6 are not meaningful for the sine function. It is a better idea to mark the zeros and extrema of the function instead. Also, the vertical axes has unnecessarily many tick marks, so I reduce them a bit.

figure(5); clf
x = linspace(0,2*pi);
p = plot(x,sin(x),’linewidth’,2);
set(p,’color’,[242 69 0]/255)
set(gca,’xtick’,[0 pi/2 pi 3*pi/2 2*pi])
set(gca,’ytick’,[-1 -.5 0 .5 1])
axis([0 2*pi -1 1.02])
box off

Now it would be nice to call pi “” instead of “3.1416.” While LaTeX expressions such as “\pi” are functional in the titles of plots in Matlab, for example, they do not work in the tick marks. One way to remedy this is to use the font called “Symbol.”

Also, the font size used for the tick marks may be too small for, say, conference presentation slides viewed from a distance. We will enlarge the font.

figure(6); clf
x = linspace(0,2*pi);
p = plot(x,sin(x),’linewidth’,2);
set(p,’color’,[242 69 0]/255)
set(gca,’xtick’,[0 pi/2 pi 3*pi/2 2*pi])
set(gca,’xticklabel’,{‘0′,’p/2′,’p’,’3p/2′,’2p’},’fontname’,’symbol’,’fontsize’,16)
set(gca,’ytick’,[-1 -.5 0 .5 1])
set(gca,’yticklabel’,{‘-1′,”,’0′,”,’1′},’fontsize’,16)
axis([0 2*pi -1 1.02])
box off

Now the sine function plot shows the function itself as the main feature, and the supporting structure is tailored to this specific case.

Sometimes it is necessary to change the shape of the rectangle containing the plot. If you need a square, write axis square. If it is important to have the same scale in the horizontal and vertical axes, write axis equal. Here I show how to choose a 1:3 ratio between the vertical and horizontal axes:

figure(7); clf
x = linspace(0,2*pi);
p = plot(x,sin(x),’linewidth’,2);
set(p,’color’,[242 69 0]/255)
set(gca,’xtick’,[0 pi/2 pi 3*pi/2 2*pi])
set(gca,’xticklabel’,{‘0′,’p/2′,’p’,’3p/2′,’2p’},’fontname’,’symbol’,’fontsize’,16)
set(gca,’ytick’,[-1 -.5 0 .5 1])
set(gca,’yticklabel’,{‘-1′,”,’0′,”,’1′},’fontsize’,16)
axis([0 2*pi -1 1.02])
set(gca,’PlotBoxAspectRatio’,[3 1 1])
box off

You can now save the image in your favorite format with commands like

print -depsc sineplot.eps

print -dpng sineplot.png

 

About Samuli Siltanen

I am an applied mathematician interested in medical imaging. For example, I study probing the human body using X-rays or harmless electrical currents, and using computers and mathematical methods to form three-dimensional reconstructions of patients from the data so collected. In my free time I like to train with kettlebells and to photograph landscapes and animals.
This entry was posted in Matlab examples, Visualization and tagged , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *