Zeitstempel übergeben matplotlib.date2num: 'str' - Objekt hat kein Attribut 'toordinal'
Haben ein array mit Zeitstempel (format %Y-%M-%D %H:%M:%S
), die aus einer Textdatei. Ich will diese Handlung in einer Nebenhandlung mit matplotlib. Aber ich kann nicht ankommen es zu wirken. Ich dachte an diese:
import numpy as np
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as md
dateconv = lambda s: datetime.strptime(s, '%Y-%M-%D %H:%M:%S:.%f')
col_names = ["timestamp", "light", "sensor1", "sensor2", "sensor3", "temp"]
dtypes = ["object", "uint8", "uint8", "uint8", "uint8", "float"]
mydata = np.genfromtxt("data.csv", delimiter=",", names = col_names, dtype=dtypes, converters={"Time": dateconv})
time = md.date2num(mydata['timestamp'])
sensor1 = mydata['sensor1']
sensor2 = mydata['sensor2']
sensor3 = mydata['sensor3']
light = mydata['light']
temp = mydata['temp']
fig = plt.figure()
rect = fig.patch
rect.set_facecolor('#31312e')
ax1 = fig.add_subplot(3,2,1, axisbg='grey')
ax1.plot_date(time, sensor1, 'c', linewidth=2)
ax1.tick_params(axis='x', colors='c')
ax1.tick_params(axis='y', colors='c')
ax1.spines['bottom'].set_color('w')
ax1.spines['top'].set_color('w')
ax1.spines['left'].set_color('w')
ax1.spines['right'].set_color('w')
ax1.yaxis.label.set_color('c')
ax1.xaxis.label.set_color('c')
ax1.set_title('Sensor 1', color = 'c')
ax1.set_xlabel('Time')
ax1.set_ylabel('Value')
ax1.set_ylim(0, 255)
ax2 = fig.add_subplot(3,2,2, axisbg='grey')
#so on...
plt.setp(ax1.xaxis.get_majorticklabels(), rotation = 25)
plt.show()
Aber es funktioniert nicht ich bekomme die folgende Fehlermeldung:
'str' object has no attribute 'toordinal'
in Zeile 18 (Linie mit md.date2num(mydata['timestamp'
)
Daten Beispiel:
2014-08-12 22:45:12.826871, 65, 244, 213, 196, 21.625
2014-08-12 22:50:14.151601, 66, 246, 208, 196, 21.312
2014-08-12 22:55:15.399692, 15, 247, 208, 196, 21.375
2014-08-12 23:00:16.717546, 15, 248, 209, 195, 21.5
2014-08-12 23:05:18.041433, 15, 249, 212, 195, 21.625
2014-08-12 23:10:19.372733, 16, 248, 216, 195, 21.687
ich glaube nicht, dass Ihre Datum-Konverter ist wirklich arbeiten. die Spalte wird noch eine Zeichenfolge sein, die nicht ein
datetime
Objekt. können Sie einige Beispiel-Daten? (5 - 10 Zeilen sollten reichen)
InformationsquelleAutor SjonTeflon | 2014-08-19
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst von allen deinen format-string falsch ist. Aussehen: http://strftime.org/
und %D ist nicht vorhanden!
Zweitens, warum verwendest du.date2num ? o_0 Warum nicht speichern Sie Sie als normale datetime-Objekte statt und nur formatieren Sie die Zecken, wie Sie wollen?
InformationsquelleAutor Dmitry Nazarov