Actions

Difference between revisions of "Graphics with Python"

From AstroEd

(Learning the basics of 2D data and function plotting)
(Learning the basics of 2D data and function plotting)
Line 29: Line 29:
 
Let's look at a simple program that generates its own data and creates a plot you can view on the screen:
 
Let's look at a simple program that generates its own data and creates a plot you can view on the screen:
  
 +
# Import the plotting and math packages
 
  import matplotlib.pyplot as plt
 
  import matplotlib.pyplot as plt
 
  import math
 
  import math
  
 +
# Define initial constants
 
  f0 = 30.
 
  f0 = 30.
 
  a0 = 100.
 
  a0 = 100.
 
  tdecay = 2.
 
  tdecay = 2.
  
 +
# Create lists for the (x,y) data
 
  time = []
 
  time = []
 
  amplitude = []
 
  amplitude = []
  
 +
# Calculate the data and append to the lists
 
  for i in range(0, 10000, 1):
 
  for i in range(0, 10000, 1):
 
   t = 0.001 * float(i)  
 
   t = 0.001 * float(i)  
Line 45: Line 49:
 
   amplitude.append(a)
 
   amplitude.append(a)
  
 +
# Create an x-y plot of the data with labeled axes
 
  plt.plot(time, amplitude)
 
  plt.plot(time, amplitude)
  plt.xlabel('Angle')
+
  plt.xlabel('Time')
  plt.ylabel('Value')
+
  plt.ylabel('Amplitude')
 
  plt.title('A Damped Oscillator')
 
  plt.title('A Damped Oscillator')
 
+
 +
# Show the data
 
  plt.show()
 
  plt.show()

Revision as of 21:26, 18 February 2013

The Python matplotlib module provides tools for interactive 2-D and 3-D graphics, and for saving plots in file formats you can easily display on the web or in other programs, print, and incorporate in documents.

Installation of matplotlib

The current version 1.2 may be included in some Linux distributions. Version 1.1 has most of the features you will need now, and it is in Ubuntu and OpenSuse packages that can be added to your core Python system after you also install numpy. For example, under Ubuntu you would use

sudo apt-get install python-matplotlib

to get the most recent version available for your system and resolve missing components.

For Windows and MacOS users, if you installed the Enthought version of Python you will have it "out of the box". For others, look at the matplotlib installation website for directions on how to install it. You will need numpy too, and it also comes in the Enthought collection.


Once you have it installed, programs that use this library will have to import it with lines such as

import numpy as np
import matplotlib as plt

to make the functions available. With these, numpy functions will start with np. and mathplotlib functions will have plt. in front of the function name, which shortens the code you would write. You can check that your computer has numpy and matplotlib by trying these commands in interactive Python or Idle. The version numbers will be available too with

print np.__version__
print plt.__version__

Learning the basics of 2D data and function plotting

The matplotlib user's guide offers a tutorial with many examples, some of which we will look at here. There is also a helpful but unfinished quick start guide written by an astrophysics graduate student.

Let's look at a simple program that generates its own data and creates a plot you can view on the screen:

# Import the plotting and math packages
import matplotlib.pyplot as plt
import math
# Define initial constants
f0 = 30.
a0 = 100.
tdecay = 2.
# Create lists for the (x,y) data
time = []
amplitude = []
# Calculate the data and append to the lists
for i in range(0, 10000, 1):
  t = 0.001 * float(i) 
  a = a0 * math.exp(-t/tdecay)*math.cos(2. * math.pi * f0 * t)
  time.append(t)
  amplitude.append(a)
# Create an x-y plot of the data with labeled axes
plt.plot(time, amplitude)
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.title('A Damped Oscillator')

# Show the data
plt.show()