Comment puis-je ouvrir plusieurs fichiers texte de différents répertoires et les tracer sur un seul graphique avec des légendes?
C'est relativement simple si vous utilisez pylab (inclus avec matplotlib) au lieu de matplotlib directement. Commencez par une liste de noms de fichiers et de noms de légendes, comme [('nom du fichier 1', 'étiquette 1'), ('nom du fichier 2', 'étiquette 2'), ...]. Ensuite, vous pouvez utiliser quelque chose comme ceci:
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")
Vous pouvez également vouloir ajouter quelque chose comme fmt = 'o' à la commande plot, afin de passer d'une ligne à des points. Par défaut, matplotlib avec des tracés pylab sur la même figure sans l'effacer, vous pouvez donc simplement exécuter la commande de tracé plusieurs fois.
Supposons que votre fichier ressemble à ceci et s'appelle test.txt (délimité par des espaces):
1 2
3 4
5 6
7 8
Ensuite:
#!/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(' ')[0] for row in data]
y = [row.split(' ')[1] 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()
Je trouve que la navigation sur le site galerie de parcelles sur matplotlib est utile pour comprendre les légendes et les étiquettes des axes.
Je pense que la manière la plus simple serait
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();