Arange and Plotting (Numpy and Matplotlib Basics 1)¶
Learning Outcomes¶
- use the
arangefunction to create time vectors - create figures, plot data, add labels and legends, and save figures
Arange¶
- function from
numpy - create an array over a range
- usage:
vect = arange(start, stop, step)t = arange(0,1,0.01)t = np.arange(0,1,0.01)
Sin, Cos, and Pi¶
- I assume these
numpyfunctions and variables are obviousnp.sinnp.cosnp.pi
figure¶
- create or activate a figure:
figure(1)
- activate if that figure number already exists; otherwise create a new figure
- create as many figures as you want/need
- the active figure is the one that gets drawn on by subsequent
plotcommands
clf¶
- clear the current figure
- usage:
clf()
matplotlibturns “hold” on by default- subsequent runs of your code will draw onto the same figure
- use
clfsort of as a replacement forclose all(Matlab) - you can use
close('all'), but your code will run a little slower
- use
plot¶
plot(x,y)- actually plot
yvs.xon the current axis - several different formats:
plot(x, y, 'r:')plot(x, y, label='$y_1$')- makes legend creation very easy, but can only handle one x/y
pair per
plotcommand
- makes legend creation very easy, but can only handle one x/y
pair per
plot(x1, y1, x2, y2)plot(x1, y1, 'r-', x2, y2, 'g-.')
- keep in mind that hold is on by default
xlabel¶
xlabel("Time (sec.)")- add a string to the x-axis label
Scientific string note¶
matplotlibsupports sub-scripts, super-scripts, and symbols using LaTeX syntax with dollar signs$:$y_1$$x^2$$\\theta$- note that you have to escape the backslash
ylabel¶
ylabel("$y_1(t)$")- add a string to the y-axis label
legend¶
- main usages:
legend([label1, label2])legend([label1, label2], loc=2)
- if you labeled all your plots:
legend()legend(loc=2)
savefig¶
- save the current figure to a file
- optionally specify dpi if saving to png
savefig("fig1.png", dpi=300)savefig("fig1.eps")- I mainly use png for websites and eps for documents
- I convert eps to pdf using a shell script
- direct pdf support may have improved over the years
- from the help: “Most backends support png, pdf, ps, eps and svg”
- I haven’t played with svg
- png is easy to stick in a Word document, but pixelation usually leads to poor print quality
Plotting example¶
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0,1,0.01)
y = np.sin(2*np.pi*t)
plt.figure(1)
plt.clf()
plt.plot(t,y)
plt.xlabel('Time (sec.)')
plt.ylabel('y(t)')
plt.show()
