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.