TypeError при преобразовании даты в читаемый формат в matplotlib - PullRequest
0 голосов
/ 25 декабря 2018

Я импортирую данные из файла CSV.Данные имеют следующий формат после чтения в формате массива, т.е. вывод print (myarray)

[['2018-12-18 10:18:18' ' 5.000000E-02' ' 4.569000E-07' ... ' 5.030000E+02' '  ' ' ']

 ['2018-12-18 10:18:28' ' 1.200000E-01' ' 4.616000E-07' ... ' 5.090000E+02' '  ' ' ']

 ['2018-12-18 10:18:38' ' 2.500000E-01' ' 4.584000E-07' ... ' 5.140000E+02' '  ' ' ']

 ...
 ['2018-12-18 16:29:31' ' 5.828500E+02' ' 1.910645E+01' ...' 3.490000E+02' '  ' ' ']

 ['2018-12-18 16:29:41' ' 5.829000E+02' ' 1.913199E+01' ...' 3.490000E+02' '  ' ' ']

 ['2018-12-18 16:29:51' ' 5.828300E+02' ' 1.910634E+01' ...' 3.490000E+02' '  ' ' ']]

Затем я пытаюсь построить первый столбец как ось x, а остальные - как ось y.Но matplotlib не принимает 0-й столбец для индексации.Поэтому я пытаюсь преобразовать его, используя matplotlib.dates, ниже приведен мой код

import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import numpy as np

import csv
with open('Historyrecipe-2018-12-18-10-18.csv', 'r')as f:
    mylist = list(csv.reader(f, delimiter='\t'))
myarray = np.array(mylist[1:])
print(myarray)

def bytespdate2num(fmt, encoding='utf-8'):
    strconverter = mdates.strpdate2num(fmt)
    def bytesconverter(b):
        s = b.decode(encoding)
        return strconverter(s)
    return bytesconverter

date, reactorPressure, vacuumGauge, MFC1, MFC2, MFC3, rfVoltage, rfCurrent, rfPower, rfFreq, crucTemp, vacPressure = np.loadtxt(myarray,delimiter='\t', unpack=True, converters={0:bytespdate2num('%Y-%m-%d %H:%M:%S')})
plt.plot_date(date, reactorPressure,'-')
plt.show()

Я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "D:\p\test2.py", line 33, in <module>
    converters={0:bytespdate2num('%Y-%m-%d %H:%M:%S')})
  File "C:\Python\lib\site-packages\numpy\lib\npyio.py", line 1054, in loadtxt
    first_vals = split_line(first_line)
  File "C:\Python\lib\site-packages\numpy\lib\npyio.py", line 996, in split_line
    line = regex_comments.split(line, maxsplit=1)[0]
TypeError: cannot use a string pattern on a bytes-like object

Я не понимаю причину этого,Нужна помощь.Дайте мне знать, если вам нужна дополнительная информация по этому делу.Заранее спасибо .. С Рождеством!

...