Ich habe eine große Datenbank mit etwa 1 Million Einträge. In einer Spalte gibt es Daten in dieser Form: '% Y-% m-% d% H:% M:% S. Es gibt einen Eintrag jede Sekunde.Plot große Datenmenge mit Daten in X-Achse
ich die Zeit wählen kann ich aus der Datenbank darstellen möchten, zB
date1 = '2015.04.22 20.28.50'
date2 = ‚2015.04.23 21: 42:09 '
und die andere Spalte möchte ich in der Y-Achse zeichnen. Wie Sie in dem konkreten Beispiel sehen können, sind von Datum1 bis Datum2 etwa 86000 Einträge - oder - Punkte zu plotten.
Gibt es eine Möglichkeit, diese Daten effizient mit matplotlib zu plotten, wobei die Daten in der x-Achse angezeigt werden? Natürlich können nicht alle Daten angezeigt werden, aber da der Plotzeitraum dynamisch ist (ich füge in ein Webformular die Daten ein, die ich möchte), gibt es eine Möglichkeit, es so zu programmieren, dass die Handlung jedes Mal die bestmögliche ist?
Bisher kann ich alle Daten in einer Liste und alle Y-Daten in einer anderen Liste.
Unten ist mein Code so weit, der die Daten darstellt, aber die X-Achsenbeschriftungen sind nichts in der Nähe, was ich will.
from buzhug import Base
import datetime
import data_calculations as pd
import matplotlib.pyplot as plt
import matplotlib
import time
date1 = '2015-04-22 20:28:50'
date2 = '2015-04-24 19:42:09'
db = Base('monitor').open()
result_set = db.select(['MeanVoltage','time'],"time>=start and time<=stop", start=date1, stop=date2)
V = [float(record.MeanVoltage) for record in result_set]
Date = [str(record.time) for record in result_set]
dates = [datetime.datetime.strptime(record, '%Y-%m-%d %H:%M:%S') for record in Date]
dates = matplotlib.dates.date2num(dates)
fig, ax = plt.subplots()
ax.plot_date(dates, V)
plt.grid(True)
plt.show()
Und das Ergebnis ist Plot
Vielen Dank im Voraus
Edit:
ich das Problem behoben haben diese Zeilen durch Zugabe:
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y %H:%M:%S'))
plt.gcf().autofmt_xdate()
jedoch Jetzt möchte ich die Handlung zu einem Web-Serve übergeben r mit der mpld3 Plugin:
mpld3.plugins.get_plugins(fig)
mpld3.fig_to_html(fig)
mpld3.show()
Während ohne das Plugin, erscheint die Handlung ganz gut, mit den Daten in der x-Achse, mit dem Plugin scheint es, wie es diese Zeile nicht analysieren kann
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y %H:%M:%S'))
in den HTML-Code und als Ergebnis wird die X-Achsenbezeichnung in Unix-Zeit angezeigt. Wer weiß, was mit dem Plugin los ist?
Danke, aber tun Sie wissen, wie Sie das Problem mit der X-Achsenbeschriftung lösen können?Auch wenn ich versuche zu zoomen, erscheinen nur die Stunden (nicht die Daten) und sie überlappen sich. Was ich möchte, ist, die Daten auch für diese großen Datensätze bestmöglich zu rendern, ohne natürlich zu überlappen, indem nur einige von ihnen beibehalten werden. – tzoukritzou