September 28 { Making Graphs with Python
September 28 ¨C Making Graphs with Python
Basics
There are three main ways to generate graphs with Python using the library matplotlib:
1. using a Jypyter notebook; this is the recommended way but does not work on noether. If
you want to use Jupyter on your home computer, you can find information on how to do it
at
2. by starting the Python interpreter using the command
python
and then typing in one-by-one the various commands.
3. by typing all commands in a file called, e.g., plot.py and then giving the command
python plot.py &
in the prompt. We will be using primarily this last method.
A good tutorial for creating simple graphs with Python can be found at
Making a basic plot
The following lines of code plot a single line between points with coordinates given in the two
arrays xarray and yarray.
import numpy as np
import matplotlib.pyplot as plt
xarray=[1,2,3,4]
yarray=[1,4,9,16]
plt.plot(xarray,yarray)
plt.xlabel(¡¯x-axis label¡¯)
plt.ylabel(¡¯y-axis label¡¯)
plt.show()
#
#
#
#
#
#
#
#
imports library for math
imports library for plots
array with x-coordinates
array with y-coordinates
plot xarray vs. yarray
label for x-axis
label for y-axis
show the plot
The output should look like:
16
14
12
y-axis label
10
8
6
4
2
0
1.0
1.5
2.0
2.5
x-axis label
3.0
3.5
4.0
Without giving any additional options, Python will generate a plot with a solid line connecting
the points and with the ranges of the axes chosen by the graphics algorithm.
In order to set a user-defined range for the axes (say the x-axis to go from 0 to 6 and the y-axis
to go from 0 to 20), we use the command
plt.axis([0, 6, 0, 20])
whereas to change the type of the plot, we give the command
plt.plot(xarray,yarray,¡¯ro¡¯)
# red circle
Our code then becomes
import numpy as np
import matplotlib.pyplot as plt
xarray=[1,2,3,4]
yarray=[1,4,9,16]
plt.axis([0, 6, 0, 20])
plt.plot(xarray,yarray,¡¯ro¡¯)
plt.xlabel(¡¯x-axis label¡¯)
plt.ylabel(¡¯y-axis label¡¯)
plt.show()
#
#
#
#
#
#
#
#
#
imports library for math
imports library for plots
array with x-coordinates
array with y-coordinates
set axes limits
plot with red circles
label for x-axis
label for y-axis
show the plot
and the output changes to
20
y-axis label
15
10
5
0
0
1
2
3
x-axis label
4
5
6
Finally, in order to export the plot to a PDF file called, e.g., plot.pdf, we change the last
command such that the code becomes
import numpy as np
import matplotlib.pyplot as plt
xarray=[1,2,3,4]
yarray=[1,4,9,16]
plt.axis([0, 6, 0, 20])
plt.plot(xarray,yarray,¡¯ro¡¯)
plt.xlabel(¡¯x-axis label¡¯)
plt.ylabel(¡¯y-axis label¡¯)
plt.savefig(¡¯plot.pdf¡¯)
plt.close()
#
#
#
#
#
#
#
#
#
#
imports library for math
imports library for plots
array with x-coordinates
array with y-coordinates
set axes limits
plot with red circles
label for x-axis
label for y-axis
save the graph as ¡¯plot.pdf¡¯
close the file
2
Changing the Plot Style
The plt.plot command takes a large number of options, which control how the data points
are plotted. We already saw how to change from the default (a solid line) to a sequence of red
circles. Other options we can play with include
plt.plot(xarray,yarray,¡¯bo¡¯)
# b: blue, o: circles
plt.plot(xarray,yarray,¡¯gs¡¯)
# g: green, s:square
plt.plot(xarray,yarray,¡¯r-¡¯)
# r: red, -:solid line
plt.plot(xarray,yarray,¡¯--¡¯)
# --: dashed line
plt.plot(xarray,yarray,¡¯:¡¯)
# : dotted line
plt.plot(xarray,yarray,¡¯go-¡¯)
# g: green, o: circles, -:line
As the above examples show, the various options can be combined to change, e.g., the style (line
vs. points), the color, or even to combine two styles, e.g., line and points.
The result of using this last command, i.e.,
import numpy as np
import matplotlib.pyplot as plt
xarray=[1,2,3,4]
yarray=[1,4,9,16]
plt.axis([0, 6, 0, 20])
plt.plot(xarray,yarray,¡¯go-¡¯)
plt.xlabel(¡¯x-axis label¡¯)
plt.ylabel(¡¯y-axis label¡¯)
plt.show()
#
#
#
#
#
#
#
#
#
imports library for math
imports library for plots
array with x-coordinates
array with y-coordinates
set axes limits
plot with green cirles+line
label for x-axis
label for y-axis
show the plot
looks like
20
y-axis label
15
10
5
0
0
1
2
3
x-axis label
4
5
6
3
The following are some of the options available to control the style and color of the plot.
Option
¡¯-¡¯
¡¯¨C¡¯
¡¯-.¡¯
¡¯:¡¯
¡¯o¡¯
¡¯s¡¯
¡¯p¡¯
¡¯*¡¯
¡¯+¡¯
¡¯x¡¯
¡¯D¡¯
Style
solid line style
dashed line style
dash-dot line style
dotted line style
circle marker
square marker
pentagon marker
star marker
plus marker
x marker
diamond marker
Option
b
g
r
c
m
y
k
w
Color
blue
green
red
cyan
magenta
yellow
black
white
We can also add the option lw to the plt.plot command to change the thickness (lineweight)
of the line and the option fontsize to the xlabel command to change the size of the font. For
example, the output of the following code
import numpy as np
#
import matplotlib.pyplot as plt
#
xarray=[1,2,3,4]
#
yarray=[1,4,9,16]
#
plt.axis([0, 6, 0, 20])
#
plt.plot(xarray,yarray,¡¯g-¡¯,lw=4)
#
plt.xlabel(¡¯x-axis label¡¯,fontsize=18)#
plt.ylabel(¡¯y-axis label¡¯,fontsize=18)#
plt.show()
imports library for math
imports library for plots
array with x-coordinates
array with y-coordinates
set axes limits
plot with thick green line
large label for x-axis
large label for y-axis
becomes
20
y-axis label
15
10
5
0
0
1
2
3
x-axis label
4
5
6
4
Changing the Plot Type
In physics, we often plot log- and log-log plots of different physical quantities. It is easy to
change the style of either the x- or the y-axes by giving the commands
plt.xscale(¡¯log¡¯)
plt.yscale(¡¯log¡¯)
For example, the following lines of code (don¡¯t forget to change the lower limits from zero to
something that has a real logarithm)
import numpy as np
import matplotlib.pyplot as plt
xarray=[1,2,3,4]
yarray=[1,4,9,16]
plt.xscale(¡¯log¡¯)
plt.yscale(¡¯log¡¯)
plt.axis([0.5, 20., 0.5, 20.])
plt.plot(xarray,yarray,¡¯g-¡¯)
plt.xlabel(¡¯x-axis label¡¯)
plt.ylabel(¡¯y-axis label¡¯)
plt.show()
#
#
#
#
#
#
#
#
#
#
imports library for math
imports library for plots
array with x-coordinates
array with y-coordinates
logarithmic x-axis
logarithmic y-axis
set axes limits
plot with green line
label for x-axis
label for y-axis
generate the following output
y-axis label
101
100
100
x-axis label
101
5
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.