How to Create a Graph in Python

(0 votes, average 0 out of 5)

 

Python is an increasingly versatile language, and is frequently used for quickly writing up computation based programs.  It can be useful to graph input, and thankfully Python has one of the most convenient and accessible libraries to graph objects - Matplotlib.  Matplotlib is a plotting library for Python which extends the numpy library.  Using matplotlib we can quickly create a graph of any two lists.  It is a very powerful library capable of making many types of graphs, including (but not limited to) bar graphs, scatter plots, log graphs, and histograms. This tutorial will teach you how to very quickly make a graph in matplotlib.  Note that matplotlib is a very powerful library and this is just a scratch of the surface!

  1. First, you will need to install matplotlib if you do not already have it.  The matplotlib installation page provides a pretty comprehensive and easy walkthrough on installing matplotlib (and numpy if you do not already have it).  http://matplotlib.sourceforge.net/users/installing.html
  2. Now we're ready to write some code.  Begin by setting up a new figure in matplotlib, making sure to import the library. We'll also set up the "backend" of Matplotlib so we will be able to save the figure to our desired output.

 

1
2
3
import matplotlib.pyplot as plt
 
plt.figure()

  1. Calling the figure() method sets up a new figure for our current plot.  Depending on what kind of graph we want, we will call a different method.  Almost all graph types are called with two parameters for the x series and the y series, which are simply lists in Python.  Since most graphs are simple scatter plots, we will look at an example using plot().  In the example below, we declare each series statically.  Typically, one list will be some computation of the x_series.  To add multiple lines to a graph, simply call plot() again.  If you want to create a new graph, call figure() again.

 

4
5
6
7
8
9
10
11
#create some data
x_series = [0,1,2,3,4,5]
y_series_1 = [x**2 for x in x_series]
y_series_2 = [x**3 for x in x_series]
 
#plot the two lines
plt.plot(x_series, y_series_1)
plt.plot(x_series, y_series_2)

  1. Now we have plotted some data to our figure.  But how do we see it?  The most practical way is to save it to a .PDF or .PNG.
8
plt.savefig("example.png")

  1. Open the file you just saved to see your graph!

test

Adding Labels and Axis Limits

Of course, the graph above is accurate but it's not exactly useful.  Often times we want to want add labels and a title, change the axes, etc.  Here we will cover some of the most common things that can be added to a graph.  Let's re-visit the code from the first part and add some fun stuff.

 

1
2
3
4
5
6
7
8
9
10
11
#add in labels and title
plt.xlabel("Small X Interval")
plt.ylabel("Calculated Data")
plt.title("Our Fantastic Graph")
 
#add limits to the x and y axis
plt.xlim(0, 6)
plt.ylim(-5, 80)

#add legend
plt.legend()
 
#save figure
plt.savefig("example.pdf")

 

Most of these functions are pretty self-explanatory and won't be explained in any more depth here.  Now let's look at our graph:

example

 

Adding a Legend and Modifying Line Properties

When we are plotting multiple lines (or whatever type of graph you are plotting), it is often necessary to be able to distinguish the lines.  We can add labels to each line after we plot it, and then add a legend to the graph.  Here is an example:

 

1
2
3
4
plt.plot(x_series, y_series_1, label="x^2")
plt.plot(x_series, y_series_2, label="x^3")
 
plt.legend(loc="upper left")

example_copy

Putting It All Together

This tutorial has covered the very basics of how to create a graph in Python.  Browse The Tech Repo for more in-depth tutorials concerning Matplotlib.   Let's look at a final version of the code and the graph it creates.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#set up matplotlib and the figure
import matplotlib.pyplot as plt
plt.figure
 
#create data
x_series = [0,1,2,3,4,5]
y_series_1 = [x**2 for x in x_series]
y_series_2 = [x**3 for x in x_series]
 
#plot data
plt.plot(x_series, y_series_1, label="x^2")
plt.plot(x_series, y_series_2, label="x^3")
 
#add in labels and title
plt.xlabel("Small X Interval")
plt.ylabel("Calculated Data")
plt.title("Our Fantastic Graph")
 
#add limits to the x and y axis
plt.xlim(0, 6)
plt.ylim(-5, 80)
 
#create legend
plt.legend(loc="upper left")
 
#save figure to png
plt.savefig("example.png")

example_copy_copy

 

Partner Links:
Last Updated on Monday, 19 July 2010 16:08  
Related Articles

» Redirect all traffic to FQDN (Fully Qualified Domain Name) using Apache

If you would like to redirect all traffic to an apache web server to the server's FQDN, e.g. redirecting http://myserver/ to http://myserver.example.com, you can easily achieve this using a two VirtualHost entries in your Apache config file. On Ubuntu, the file to edit is /etc/apache2/sites-enabled/000-default. Find your original <VirtualHost> declaration, and add a ServerName field with the server's FQDN (fully qualified domain name):12345<VirtualHost *:80> ServerAdmin...

» Comparing Browsers - Chrome vs Firefox vs Safari vs Internet Explorer vs Opera - Pros & Cons

Choosing a browser can be tough as there are many considerations that should be taken into account.  Which browser is going to be fast? Which ones are stable and won't crash often? How about ease of use? Look and feel that suites your needs? How about security - viruses, trojans, malicious popups, tracking, etcetera?  What else can your browser do for you besides strictly surfing the net?  How about extensions and add-ons that will give you extra functionality?  The purpose...

» For Loops in Python

For loops in Python are a bit different than most languages.  You may not iterate over some integer and increment as you go.  Rather, python uses for loops to iterate over lists or strings (represented as lists).  Python also does not use brackets to determine scope, but rather indentation.  Example below.  123>>> x = [1, 2, 3]>>> for value in x: #begin for loop, note the colon>>> print x #part of the loop, indented in In some cases, you want to know the where in...