Python: графики без сохранения данных в изображениях
Я строю графики для датчиков и сохраняю изображения в формате png... файлы сохраняются, но они пустые, и когда я запускаю файл, только первый график заполняется информацией. и мне нужно разделить их на свои собственные массивы без жесткого кодирования
import sys
import numpy as np
import matplotlib.pyplot as plt
#file_name = sys.argv[1]
with open('bindata.bin', "rb") as fin:
n_points = int(np.fromfile(fin, dtype=np.float32, count = 1))
n_sensors = int(np.fromfile(fin, dtype=np.float32, count = 1))
print 'Number of measurements per sensor: ', int(n_points)
print 'Number of sensors: ', int(n_sensors)
pressure = n_points * n_sensors
print 'Pressure data: ', pressure
#go back to the beginning of the file
fin.seek(0)
pfluc_dtype = np.dtype([
("n_points", np.float32),
("n_sensors", np.float32),
("velocity1", np.float32),
("velocity2", np.float32),
("fs_velocity", np.float32),
("n_locations", (np.float32, n_sensors)),
("cavity_dims", (np.float32,3)),
("ref_pressure", np.float32),
("pressure", (np.float32, pressure))
])
data = np.fromfile(fin, dtype=pfluc_dtype, count =1)
parray = data['pressure'].reshape((n_points,n_sensors))
#print header from list
output = open("header.txt", "wb")
[output.write(x) for x in list(pfluc_dtype.names)]
plt.plot(parray[:524288])
plt.show()
plt.savefig('figure1a.png')
plt.plot(parray[524288:1048576])
plt.show()
plt.savefig('figure2a.png')
plt.plot(parray[1048576:1572864])
plt.show()
plt.savefig('figure3a.png')
plt.plot(parray[1572864:2097152])
plt.show()
plt.savefig('figure4a.png')
plt.plot(parray[2097152:2621440])
plt.show()
plt.savefig('figure5a.png')
plt.plot(parray[2621440:3145728])
plt.show()
plt.savefig('figure6a.png')
1 ответ
Бьюсь об заклад, проблема в команде plt.show(). Я думаю, что для правильной работы этого кода вам необходимо закрыть каждую цифру, прежде чем переходить к следующей. Попробуйте закомментировать все команды plt.show(). Так что ваши графики не будут появляться при запуске скрипта, но я думаю, что они сохранятся правильно.