metal.su...@gmail.com wrote: > Hi, I'm learning python and full of extensive tutorials around. Getting a > bit lost and overflowed in my head with tuples, dictionaries, lists, etc > ... etc... Everything great, but I'd like to perform some basic task while > learning the rest. For example, I'm having a hard time to find some > practical info to get me up to speed. E.g. doing the following list of > tasks: > > - read a file named 'data.dat' (let's suppose it has 13 columns and n > lines) and read column 3 and 4 > > -plot column 3 vs column 4 > > -write a file 'outcome.txt' which has column 3 and 4 > > How do I do read and write of files? Is there some extra library I need > for doing plots? I have read about matplotlib.pyplot. How can I do the > plot above using this library? (running python3.5 in OSX). > > Thanks! > J.
Here's a simple implementation that assumes both input and output file $ cat plot_data.py import csv import sys from matplotlib import pyplot # get file names and column indices from commandline arguments infile = sys.argv[1] outfile = sys.argv[2] xindex = int(sys.argv[3]) - 1 yindex = int(sys.argv[4]) - 1 # read the specified input file columns into separate lists x = [] y = [] with open(infile) as instream: for row in csv.reader(instream, delimiter="\t"): x.append(float(row[xindex])) y.append(float(row[yindex])) # write specified columns to output file with open(outfile, "w") as outstream: csv.writer(outstream, delimiter="\t").writerows(zip(x, y)) # draw and show plot pyplot.plot(x, y) pyplot.show() Use it like this: $ python3 plot_data.py data.dat outfile.txt 3 4 PS: I used the following script to create some sample data: import math import random ROWS = 100 def make_func(i): if i == 2: return lambda i: i else: N = random.randrange(1, 30) def f(i): return math.sin(i * N / ROWS) return f column_funcs = [make_func(i) for i in range(13)] with open("data.dat", "w") as outstream: for i in range(ROWS): print( "\t".join(map(str, [g(i) for g in column_funcs])), file=outstream ) -- https://mail.python.org/mailman/listinfo/python-list