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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.