Seite 1 von 1

Multible Plots per Funktion

Verfasst: Samstag 24. April 2021, 11:06
von Hartmannsgruber
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

Re: Multible Plots per Funktion

Verfasst: Samstag 24. April 2021, 11:56
von __deets__
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.