-
Notifications
You must be signed in to change notification settings - Fork 0
/
grafica1.py
125 lines (87 loc) · 3.25 KB
/
grafica1.py
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import scipy.io
import os
import chardet
import matplotlib.pyplot as plt
# Obtiene la lista de archivos en la carpeta "pruebas"
files = os.listdir("pruebas")
# Muestra la lista de archivos al usuario y le permite seleccionar uno
print("Selecciona un archivo:")
for i, file in enumerate(files):
print("{}. {}".format(i + 1, file))
selected = int(input())
# Obtiene el nombre del archivo seleccionado
filename = files[selected - 1]
# Especifica el número de línea a partir de la cual se deben leer las líneas del archivo
n = 56
# Abre el archivo en modo lectura
with open("pruebas/{}".format(filename), "r", encoding="ISO-8859-1") as f:
# Lee las líneas del archivo
lines = f.readlines()
# Toma las líneas a partir de la línea n
lines = lines[n:]
values =[]
# itera sobre las líneas
for line in lines:
row = line.split("\t")
# Itera sobre la lista
float_lst = [float(item) for item in row]
values.append(float_lst)
# Crea un diccionario con la matriz que quieres guardar
data = {"matrix": values}
# Guarda la matriz en un archivo con extensión .mat
scipy.io.savemat("datos.mat", data)
# Crea una figura con 3 gráficas verticalmente
fig, ax = plt.subplots()
fig.subplots_adjust(hspace=0.526)
# Grafica la columna 8 versus la columna 9 en la primera gráfica
ax.plot([row[7] for row in values], [row[8] for row in values])
ax.set_xlabel("Ewe, V")
ax.set_ylabel("I, mA")
subcadenas = filename.split("_")
titulo = subcadenas[0]
cadena = subcadenas[2]
subcadenas = cadena.split(".")
# Tomar el primer elemento de la lista
sal = subcadenas[0]
ax.set_title(titulo + ". Electrolito: " + sal)
# Muestra la gráfica
# plt.show()
with open("pruebas/{}".format(filename), "r", encoding="ISO-8859-1") as f:
# Lee todas las líneas del archivo
lines = f.readlines()
# Lista con los índices de las líneas a extraer
# Ei (V) línea 33, V
# dE/dt línea 35, mV/s
# E1 línea 37, V
# E2 línea 48, V
line_indices = [33, 35, 37, 48, 50]
# Lista para guardar las leyendas
leyendas = []
parametros = ['Ei', 'dE/dt', 'E1', 'E2', 'ciclos']
unidades = [' V', ' mV/s', ' V', ' V', '']
# Itera sobre los índices de las líneas
for n in line_indices:
# Accede a la línea n
line = lines[n-1]
# Divide la línea por espacios en blanco
parts = line.split()
# Guarda la última parte de la línea (la leyenda) en la lista
leyendas.append(parts[-1])
# print (leyendas)
# Genera la lista de anotaciones
anotar = [f"{parametro} = {leyenda}{unidad}" for leyenda, parametro, unidad in zip(leyendas, parametros, unidades)]
leyendas_str = ",".join(leyendas)
leyendas_str = titulo + "," + sal + "," + leyendas_str
# Abre el archivo en modo a (para añadir al final del archivo)
with open("resultados.txt", "a") as f:
# Escribe la nueva línea en el archivo
f.write(leyendas_str + "\n")
x= 0
y = 0.04
# Itera sobre los elementos de la lista
for i, elemento in enumerate(anotar):
# Coloca el elemento como anotación en la gráfica
y = y-0.04
ax.text(x, y, elemento)
# Guarda la figura como imagen en formato JPG
fig.savefig("graficas/" +titulo + "_" + sal +".jpg", dpi=300)