Seite 1 von 1

flask, matplotlib, sqlite3, Was habe ich getan? Wie kann ich das Bild Skalieren?

Verfasst: Sonntag 18. März 2018, 00:01
von telegraph
Hallo zusammen,

ich habe mir ein Plot auf einem flask erstellt, kann aber nicht jeden schritt des Plot in Worten erklären gibt es jemanden der mir auf die Sprünge helfen kann. Zu dem würde ich gerne noch die Größe ändern aber über canvas.resize(1000, 2000) funktioniert es nicht.

Wie bekomme ich die x und y Axe um beschriftet oder kann Beschriftungen entfallen lassen ?

Das wird dann mit <img src="{{url_for('build_plot1')}}" alt="loading..." height="100%" /> auf die Seite gebracht.

Code: Alles auswählen


@app.route('/plot1.png')
def build_plot1():
    conn = sqlite3.connect('DB_egx300.db')
    c = conn.cursor()
    c.execute('SELECT {0}, Ortszeitstempel FROM egx300'.format('Schaltkreis_1_Strommittelwert_A'))
    dates = []
    values = []
    for row in c.fetchall():
        print(row)
        dates.append(row[1])
        values.append(row[0])


    fig = Figure()
    ax = fig.add_subplot(111)
    ax.plot(dates, values)

    img = io.BytesIO()
    canvas = FigureCanvasAgg(fig)
    canvas.resize(1000, 2000)
    canvas.print_figure(img, format='png', dpi=150)

    response = make_response(img.getvalue())
    response.headers['Content-Type'] = 'image/png'
    return response



Re: flask, matplotlib, sqlite3, Was habe ich getan? Wie kann ich das Bild Skalieren?

Verfasst: Sonntag 18. März 2018, 12:31
von Sirius3
@telegraph: alle Fragen zu Matplotlib beantwortet am besten die Matplotlib-Dokumentation, vor allem die Liste der Beispiele bietet für viele Anwendungsfälle schon was fertiges.

Variablen sollten nicht in die Felder einer Datenbanktabelle kodiert werden. Benutze eine Tabelle, die die Felder Schaltkreis und Strommittelwert miteinander verbindet.

Code: Alles auswählen

    cursor = conn.cursor()
    cursor.execute('SELECT Strommittelwert, Ortszeitstempel FROM strom where Schaltkreis = ?', [1])
    dates = []
    values = []
    for value, date in cursor:
        dates.append(date)
        values.append(value)

Re: flask, matplotlib, sqlite3, Was habe ich getan? Wie kann ich das Bild Skalieren?

Verfasst: Dienstag 20. März 2018, 20:54
von telegraph
@ Sirius3
Danke das gibt die Datenbank aber zurzeit nicht her. Ich bin mir Sicher das man da noch einiges optimieren kann.

Re: flask, matplotlib, sqlite3, Was habe ich getan? Wie kann ich das Bild Skalieren?

Verfasst: Dienstag 20. März 2018, 21:14
von Sirius3
@telegraph: daher solltest Du ja das Datenbankdesign verbessern.