Comment ouvrir plusieurs fichiers texte provenant de différents répertoires et les représenter sur un seul graphique avec des légendes ?
Réponses
Trop de publicités?Ceci 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 légendes, comme [ ('nom du fichier 1', 'label 1'), ('nom du fichier 2', 'label 2'), ...]. Ensuite, vous pouvez utiliser quelque chose comme ce qui suit :
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 ajouter quelque chose comme fmt='o' à la commande plot, afin de passer d'une ligne à des points. Par défaut, matplotlib with pylab trace sur la même figure sans l'effacer, vous pouvez donc simplement exécuter la commande plot plusieurs fois.
Supposons que votre fichier ressemble à ceci et qu'il 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 le fait de parcourir les galerie de graphiques sur matplotlib utile pour comprendre les légendes et les étiquettes des axes.
Je pense que la méthode la plus simple serait la suivante
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 est la chaîne de caractères affichée dans la légende
- vous pouvez tracer autant de séries de points de données que possible avant show() pour les tracer toutes sur le même graphique C'est la façon la plus simple de tracer des graphiques simples. Pour d'autres options de genfromtxt, voir ceci url .