Bonsoir à tous,
voilà je viens poser mon problème par ici, j'ai un peu hésité, mais j'ai besoin d'un coup de main avant de trouver ca chiant, pas simple d'apprendre tout seul...
le but de la fonction : lire un fichier texte, organisé en colonnes, séparées par un espace (un truc du genre col1 col2 col3) et faire un plot de col2 et col3 sur le même graph, en fonction de col1.
Typiquement, un fichier enregistrant des variations de Y paramètres répartis sur Y colonnes en fonction de la colonne 1 (ou X) qui enregistre le temps..
Pour deux colonnes : on peut faire ceci :
Aussi, j'imagine le cas où on se trouve avec plusieurs colonne et qu'il soit nécessaire de tracer chaque colonne sur le même graph, en somme un cas "général".
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
32
33
34 #!/usr/bin/python # encoding: utf-8 import matplotlib.pyplot as plt import numpy as np import csv def plot(file,title): "plot file with 1 parameter, 1 column " file = csv.reader(open(file,"rb"), delimiter=" ") x = [] y = [] for line in file: temp=line[0].split() x.append(float(temp[0])) y.append(float(temp[1])) n_x = np.array(x) n_y = np.array(y) print n_x print n_y plt.plot(n_x, n_y,"-rx",linewidth=1.0) plt.title(title) plt.grid(True) raw_input() plt.show() return plot('file.txt',"figure title here")
J'ai tenté, de faire une boucle en remplacant pour l'ajoût dans la liste y des éléments lus pour chaque ligne, mais forcément, je rajoute des valeurs dans ma liste sous la forme : col2,col3,col4, col2*,col3*,col4*, etc avec des * correspondant aux valeurs respectives des lignes suivantes du fichier. Il faudrait alors faire un tri pour ne prendre dans un premier temps que les valeurs de col2 et les ajoutées au tableau n_yi.
Je ne pense pas que ce soit la meilleure solution, et c'est là ou j'ai besoin d'aide.
Merci d'avance pour vos lumières!
Partager