plotting-files.txt
author shantanu <shantanu@fossee.in>
Tue, 30 Mar 2010 15:40:44 +0530
changeset 3 093edb39f292
parent 0 67604aed10e0
child 19 b77b9fce62d6
permissions -rw-r--r--
Added more changes to plotting-files script.

Hello, this is second tutorial from the series of Python for 
Scientific computing.

Here we will teach you how to plot experimental data, with two
variables. Please make sure you have pendulum.txt file, we will
be using it for introduction of concepts(requirements page!).

We shall look at inputting experimental data and plotting it. 

The data could be input either as lists or read from plain text/
binary files

# Before starting with this video, you should be comfortable with
#   - Lists
#     - initializing them
#     - appending elements to lists
#   - for command
#     - iterating over a list
#   - split command
#   - plot command
#     - plotting two variables

Let's begin with inputting the data as lists and plotting it. 

x = [0, 1, 2.1, 3.1, 4.2, 5.2]
here x is a list. In python list is a container that holds number of
objects. Various functions related to lists will be covered in more 
detail later.

We create one more list to represent corresponding Y values
y = [0, 0.8, 0.9, 0, -0.9, -0.8]

Now we have x and y in two lists and we make a plot of x vs. y. 
plot (x, y, 'o')
Here, we have our plot!

[We close the plot window. ]

Now, that we know how to plot data which is in lists, we will look at
plotting data which is in a text file. Essentially, we read the data
from the file and massage it into lists again. Then we can easily
plot it, as we already did. 

As an example we will use the data collected from a simple pendulum
experiment. 

In []: cat pendulum.txt (windows?)

The cat command, shows the contents of the file. 

The first column is the length of the pendulum and the second column
is the time. We read the file line-by-line, collect the data into
lists and plot them. 

We begin with initializing three empty lists for length, time-period
and square of the time-period. 

l = []
t = []
tsq = []

Now we open the file and read it line by line. 
for line in open('pendulum.txt'):

':' in end of for statement marks the start of block.

open returns a iterable object which we traverse using for loop. In 
python for iterates over items of any sequence.
#we will cover more of 'for' loop in later sections
line is a string variable storing one line at a time as for loop 
iterates through file.

We split each line at the space using

    point = line.split()

split function will return list. In this case it will have two 
elements, first is length and second being time.

mind the indentation here. Everything inside 'for' loop has to be 
indented by 4 spaces.

Then we append the length and time values to the corresponding
lists. Note that they are converted from strings to floats, before
appending to the lists
    l.append(float(point[0]))
append is function to append one element to the list.
    t.append(float(point[1]))

By this time we have time and length values in two lists. Now to get
square of time values we will write one more for loop which this time
iterate through list 't'

for time in t:
    tsq.append(time*time)

# We also calculate the squares of the time-period and append to the 
# end of the tsq list. 
#     tsq.append(t[-1]*t[-1])
# For any given list to access last element python provides '-1' 
# index, so we use t[-1].

Now lists l(en) and tsq have the required data. We can simply plot 
them, as we did already.

plot(l, tsq, 'o')

Enjoy(Thank you)!

For alternate ways of loading data from files go through tutorial on 
loadtxt
******************
We should have two tutorials here, one should be basic, using for 
loops and lists
Second one using loadtxt.