Ein Kollege von mir reichte mir ein Skript, mit dem Daten aus einer Datenbank gesammelt und geplottet werden. Wenn ich das Skript selbst benutzte, sehen die Diagramme nicht gleich aus, und es hat mit der Version von Matplotlib zu tun.Unterschied beim Plotten mit verschiedenen Matplotlib-Versionen
Das Skript, das die Aufzeichnung der Daten tut, ist recht kurz:
import matplotlib.pyplot as plt
import csv
import os
from dateutil import parser
def plot(outputDir,plotsDir,FS):
allfiles = os.listdir(outputDir)
flist = []
for f in allfiles:
if 'csv' in f.lower(): flist.append(f)
for f in flist:
with open(outputDir + '/' + f, 'rt') as ff:
data = list(csv.reader(ff,delimiter=FS))
values = [i[2] for i in data[1::]]
values = ['NaN' if v is '' else v for v in values]
time = [parser.parse(i[1]) for i in data[1::]]
plt.xlabel('Time_[UTC]')
plt.plot(time, values)
plt.xticks(rotation=40)
if os.path.isdir(plotsDir) != 1:
os.mkdir(plotsDir, 777)
plt.savefig('{}/{}_Data.png'.format(plotsDir, f[:-4]), bbox_inches='tight', dpi=160)
plt.clf()
outputdir = 'C:/Users/matthijsk/Documents/Test'
plotsdir = outputdir + '/plots'
fs = ','
plot(outputdir, plotsdir, fs)
Wenn ich es mit Matplotlib Version 2.1.0 laufen, mein Bild sieht wie folgt aus: Wenn ich laufe es Matplotlib mit 2.0.2 Version, sieht es so, wie es soll:
die Datei das Skript sieht wie folgt liest:
stationNo,dtg(UTC),TT_[°C],source_TT,quality_TT
10381,2017-01-01 00:00:00,3.0,ob,na
10381,2017-01-01 01:00:00,3.0,ob,na
10381,2017-01-01 02:00:00,2.4,ob,na
10381,2017-01-01 03:00:00,2.5,ob,na
10381,2017-01-01 04:00:00,2.5,ob,na
10381,2017-01-01 05:00:00,2.3,ob,na
10381,2017-01-01 06:00:00,1.9,ob,na
10381,2017-01-01 07:00:00,1.0,ob,na
10381,2017-01-01 08:00:00,0.1,ob,na
10381,2017-01-01 09:00:00,0.9,ob,na
Kann mir jemand erklären, was in Matplotlib geändert wurde, was das verursacht hat? Und anscheinend mache ich etwas falsch mit der Verschwörung, die das verursacht. Kann jemand einen Fehler bemerken? Ich habe bereits versucht
mitvalues = [float(value) if value.isnumeric() else None for value in values]
Aber das war es nicht zu lösen. Hinweis: Ich würde lieber keine Nicht-Standard-Pakete (wie Pandas) verwenden, da es ziemlich mühsam ist, die Installation solcher Pakete zu genehmigen.