Multible Plots per Funktion

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

Servus Forum,

ich habe mich mit matplotlib beschäftigt.
Nun habe ich mir eine Funktion zum Plotten von einem Dataframes geschrieben.

Code: Alles auswählen

def plote_single_index(df, index, wert="Close", label=""):
    x_achse = []
    y_achse = []

    for eintrag in df[index]:
        x_achse.append(eintrag["Datum"])
        y_achse.append(eintrag[wert])

    fig, ax = plt.subplots()
    ax.plot(x_achse, y_achse)
    ax.scatter(x_achse, y_achse, color="red", label=label)
    ax.legend()
    ax.set_title("Verlauf")
    ax.set_xlabel("Tage")
    ax.set_ylabel(wert)
    fig.autofmt_xdate(rotation=45)
    plt.show()
Nun habe ich mich aber gefragt, ob man auch in eine Grafik zwei, oder mehr Dataframes mithilfe einer Funktion plotten kann.
Mein anfänglicher Gedanke wäre, einer Funktion eine Liste mit Dictionaries zu übergeben. Die Dicts hätten folgenden Aufbau:

Code: Alles auswählen

[{"dataframe": [ ], "beschriftung": ""}, {"dataframe": [ ], "beschriftung": ""}]
Aus dem Dataframe würden dann die Werte für jeweils die x und y Achse entnommen werden.
Aufbau Dataframe:

Code: Alles auswählen

fuehler = {"fuehler1": [
    {'Datum': pd.Timestamp('2021-03-12 00:00:00'), "Status": 1000},
    {'Datum': pd.Timestamp('2021-03-13 00:00:00'), "Status": 1100},
    {'Datum': pd.Timestamp('2021-03-14 00:00:00'), "Status": 1200},
    {'Datum': pd.Timestamp('2021-03-15 00:00:00'), "Status": 1300},
    {'Datum': pd.Timestamp('2021-03-16 00:00:00'), "Status": 1250},
    {'Datum': pd.Timestamp('2021-03-31 00:00:00'), "Status": 1100}]}
    
durchschnitte = {"durchschnitt_fuehler1": [
    {'Datum': pd.Timestamp('2021-03-12 00:00:00'), "Status": 900},
    {'Datum': pd.Timestamp('2021-03-13 00:00:00'), "Status": 1100},
    {'Datum': pd.Timestamp('2021-03-14 00:00:00'), "Status": 850},
    {'Datum': pd.Timestamp('2021-03-15 00:00:00'), "Status": 1600},
    {'Datum': pd.Timestamp('2021-03-16 00:00:00'), "Status": 1150},
    {'Datum': pd.Timestamp('2021-03-31 00:00:00'), "Status": 1000}]}
Ist der Gedanke mit der Übergabe der Dicts falsch, gibt es einen einfacheren/besseren Weg, oder ist dies möglich?

LG
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Gehen tut das. Die kanonische Lösung für sowas wäre aber eher eine Klasse, die eine einfach api zum anlegen eines Plots bietet. Und dann kommt zum guten Schluss ein “Show”-Aufruf.
Antworten