plotting-files.txt
author shantanu <shantanu@fossee.in>
Tue, 30 Mar 2010 11:00:01 +0530
changeset 0 67604aed10e0
child 3 093edb39f292
permissions -rw-r--r--
Initialization and scripts for first two sessions.

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!).

In general, we don't plot (analytical) functions. We often have
experimental data points, that we wish to plot. We shall look at
inputting this data and plotting it. 

The data could be input (or entered) in two formats. For smaller data
sets we could use lists to input the data and use plain text files for
(somewhat?) larger ones. (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. I 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. We have the data of, the length of pendulum vs. the time
period of the pendulum in the file pendulum.txt

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 = []
#len? (confusion over 1 and l(damm they are really same looking:P))
t = []
tsq = []

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

open returns a iterable object which we traverse using for loop. In 
python  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 
    point = line.split()

mind the indentation here.

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])
    t.append(float(point[1])
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 the lists l, t have the required data. We can simply plot them, as
we did already. 

plot(l, t, 'o')

Enjoy!

******************
We should have two tutorials here, one should be basic, using for loops
and lists
Second one using loadtxt.