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

Django, Flask, Bottle, WSGI, CGI…
Antworten
telegraph
User
Beiträge: 31
Registriert: Mittwoch 6. November 2013, 10:59

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


Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@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)
telegraph
User
Beiträge: 31
Registriert: Mittwoch 6. November 2013, 10:59

@ Sirius3
Danke das gibt die Datenbank aber zurzeit nicht her. Ich bin mir Sicher das man da noch einiges optimieren kann.
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@telegraph: daher solltest Du ja das Datenbankdesign verbessern.
Antworten