Matplotlib die letzten nicht die ersten
Verfasst: Donnerstag 12. April 2018, 16:55
Hallo zusammen,
kann mir jemand einen tip geben, wie ich mit matplotlib die letzten daten plotte und nicht die ersten.
kann mir jemand einen tip geben, wie ich mit matplotlib die letzten daten plotte und nicht die ersten.
Code: Alles auswählen
@app.route('/welcome_test', methods=['POST', 'GET'])
def welcome_test():
response = b'0'
aktueller_wert = ""
letzes_datum = ""
if 'username' in session:
if request.method == 'POST':
#Form abfrage
temp_values_of_interest = request.form.get('Plot_Daten')
#Safety first, um keine request direct in die Datenbank zu übernehmen
values_of_interest = where_is(temp_values_of_interest)
# Datenbank abfrage
conn = sqlite3.connect('C:\\Users\\teleg\\OneDrive\\Desktop\\Easy_projekt\\CSV_to_SQLite\\DB_egx300.db')
c = conn.cursor()
c.execute('SELECT {0}, Ortszeitstempel FROM egx300 ORDER BY Ortszeitstempel ASC'.format(values_of_interest))
#Daten aufbereiten
dates = []
values = []
for row in c.fetchall():
dates.append(row[1])
values.append(row[0])
print(dates, values)
aktueller_wert = values[-1]
letzes_datum = dates[-1]
print(letzes_datum)
xscale = len(dates) - 4
xscale1 = len(dates)
print(len(dates), xscale)
# Erzeuge eine neu Figur mit entsprechenden Parameter
plt.figure(figsize=(9, 4), dpi=200)
plt.plot(dates, values)
#plt.xlim(xscale, len(dates))
plt.title(values_of_interest)
plt.xlabel("Datum")
plt.ylabel("Werte Bereich")
#plt.autoscale()
#plt.tick_params(pad=2)
#plt.xlim(xscale, len(dates))#die letzten 4 Daten Work
#plt.xlim(0, len(dates))
#plt.xticks([10, 100, 449])
frequency = 200
plt.xticks(dates[::frequency])
#plt.xlim(min=0)
#plt.gca().set_xlim(left=0)
plt.grid(True)
#plt.xticks((5 ,len(dates)))
#plt.show()
#plt.locator_params(tight=True, nbins=4)
# Plot encode
img = io.BytesIO()
img.seek(0)
plt.savefig(img, format='png', transparent=True)
#Clear plt
#plt.clf()
#plt.cla()
#plt.close()
response = base64.b64encode(img.getvalue())
return render_template('welcome_test.html', username=session['username'], response=response.decode('utf8'), aktueller_wert=aktueller_wert, letzes_datum=letzes_datum)
else:
return redirect(url_for('login'))