How do I open multiple text files from different directories and plot them on a single graph with legends?
This is relatively simple if you use pylab (included with matplotlib) instead of matplotlib directly. Start off with a list of filenames and legend names, like [ (‘name of file 1’, ‘label 1’), (‘name of file 2’, ‘label 2’), …]. Then you can use something like the following:
import pylab datalist = [ ( pylab.loadtxt(filename), label ) for filename, label in list_of_files ] for data, label in datalist: pylab.plot( data[:,0], data[:,1], label=label ) pylab.legend() pylab.title("Title of Plot") pylab.xlabel("X Axis Label") pylab.ylabel("Y Axis Label")
You also might want to add something like fmt=’o’ to the plot command, in order to change from a line to points. By default, matplotlib with pylab plots onto the same figure without clearing it, so you can just run the plot command multiple times.
Assume your file looks like this and is named test.txt (space delimited):
1 2 3 4 5 6 7 8
#!/usr/bin/python import numpy as np import matplotlib.pyplot as plt with open("test.txt") as f: data = f.read() data = data.split('n') x = [row.split(' ') for row in data] y = [row.split(' ') for row in data] fig = plt.figure() ax1 = fig.add_subplot(111) ax1.set_title("Plot title...") ax1.set_xlabel('your x label..') ax1.set_ylabel('your y label...') ax1.plot(x,y, c='r', label='the data') leg = ax1.legend() plt.show()
I find that browsing the gallery of plots on the matplotlib site helpful for figuring out legends and axes labels.
I feel the simplest way would be
from matplotlib import pyplot; from pylab import genfromtxt; mat0 = genfromtxt("data0.txt"); mat1 = genfromtxt("data1.txt"); pyplot.plot(mat0[:,0], mat0[:,1], label = "data0"); pyplot.plot(mat1[:,0], mat1[:,1], label = "data1"); pyplot.legend(); pyplot.show();
- label is the string that is displayed on the legend
- you can plot as many series of data points as possible before show() to plot all of them on the same graph
This is the simple way to plot simple graphs. For other options in genfromtxt go to this url.