Tracer une courbe avec données issues deux fichiers textes
Bonjour,
Je ne connais pas du tout le python et je souhaite tracer une courbe y en fonction de x avec des données issues de Y.txt et X.txt qui ressemble à cela:
Y.txt
X.txt
Pour cela j'utilise Matplotlib en stockant dans un tableau différent les données issues de chaque fichier, mais le problème est que je n'arrive pas à créer le graphique car j'ai l'erreur suivante:
Code:
1 2
| raise ValueError("x and y must have same first dimension")
ValueError: x and y must have same first dimension |
Voici le script:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
from numpy import *
import matplotlib.pyplot as plt
dataG = fromfile('X.txt', 'float32')
dataC = fromfile('Y.txt', 'float32')
x = dataG[::1]
y = dataC[::1]
plt.plot(x, y) #je precise que les deux fichiers ont le même nombres de lignes
plt.xlabel('Energy [MeV]')
plt.ylabel('Nb particles')
plt.legend()
plt.show() |
J'ai trouvé une solution qui marche en bidouillant un script existant, mais j'aimerai bien faire fonctionner mon script et comprendre pourquoi il ne marche pas, voici le deuxième script:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| # -*- coding: iso-8859-1 -*-
import matplotlib.pyplot as plt
import sys
import os
#for i in range(1, len(sys.argv)):
f1 = open(sys.argv[1], 'r')
x = []
lines = [line.strip() for line in f1.readlines()]
for line in lines:
col1 = line.split()
x.append(col1)
f2 = open(sys.argv[2], 'r')
y = []
lines = [line.strip() for line in f2.readlines()]
for line in lines:
col2 = line.split()
y.append(col2)
#string, ext = os.path.splitext(sys.argv[i])
plt.plot(x, y)
plt.xlabel('epsilon')
plt.ylabel('MPa')
plt.legend()
plt.show() |
Merci de votre aide.