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'))