Seite 1 von 1

Färbung von Liniengraphen nach Kategorie

Verfasst: Dienstag 26. Juli 2022, 22:02
von nichtSoGuter
Ich habe 360 Liniengraphen. Jede Graph ist einer Kategorie von 0 bis 4 zugeordnet. Ich möchte die Graphen in Abhängigkeit von ihrer Kategorie färben. z.B. die ersten 90 Liniengraphen grün, die nächsten 90 Liniengraphen rot, etc.
Dabei handelt es sich bei den Liniengraphen um Kraft-Weg Kurven
Dazu habe ich 3 Arrays:
x = Weg mit dem shape = (154, )
y = Kraft in Abhänigkeit des zurückgelegten Weges mit dem shape (154, 360)
kategorien = Beinhaltet die Kategorie der einzelnen Kurven mit dem shape (360,)

ich kann mit plt.plot alle 360 graphen plotten. Mit wenn ich das Attribut "c" von plt.plot mit den Kategorien gleichsetze dann funktioniert das leider nicht.
Die kategorien habe ich aus einer Spalte eines Pandas dataframes. Ich weiß leider nicht welche typen die Kategorien haben müssen, damit diese mit dem Attribut "c" gleichgesetzt werden können. In der Desricption bei mathplotlib steht bei value type von "c" --> "any matplotlib color". Was soll das bitte sein?

Ich habe es mit listen, numpy arrays und pandasspalte versucht. Leider funktioniert keiner meiner Versuche (siehe Code unten). Ich habe auch viel mit den shapes experementiert. Leider hat das auch nicht mein Problem gelöst

Code: Alles auswählen

kategorien = df["Kategorienummer"].to_list()
plt.plot(x_achse, alle_y_achsen, c=kategorien)
# Fehlermeldung: ValueError: kategorien is not a valid value for color

kategorien = df["Kategorienummer"].to_numpy()
plt.plot(x_achse, alle_y_achsen, c=kategorien)
# Fehlermeldung: ValueError: kategorien is not a valid value for color

kategorien = df["Kategorienummer"]
plt.plot(x_achse, alle_y_achsen, c=kategorien)
# Fehlermeldung: ValueError: Name: Kategorienummer, Length: 360, dtype: int64 is not a valid value for color

Re: Färbung von Liniengraphen nach Kategorie

Verfasst: Dienstag 26. Juli 2022, 22:26
von __blackjack__
@nichtSoGuter: In Matplotlib kann man Farben in verschiedenen Formaten angeben. Und jede davon funktioniert für `c`. Hach wenn es doch nur eine Dokumentation gäbe, und eine Gallerie mit Beispielen…

Re: Färbung von Liniengraphen nach Kategorie

Verfasst: Dienstag 26. Juli 2022, 22:59
von nichtSoGuter
Ist der letzte Satz ironisch gemeint?

In diesem Video https://www.youtube.com/watch?v=VolIkTkYqMw&t=389s wird für c einfach eine Liste von zahlen übergeben. Das habe ich oben auch versucht. Funktioniert wohl leide nicht.
Ich habe es auch folgendermaßen versucht:

Code: Alles auswählen

colors = {"Referenz":'tab:blue', "Referenz2":"tab:orange", "Referenz3":"tab:green"}
kategorien = df["Kategorie"].map(colors)
plt.plot(x_achse, alle_y_achsen, c = kategorien )
# Fehlermeldung: Name: Kategorie, Length: 360, dtype: object is not a valid value for color

Re: Färbung von Liniengraphen nach Kategorie

Verfasst: Mittwoch 27. Juli 2022, 05:58
von Dennis89
Hallo,
nichtSoGuter hat geschrieben: Dienstag 26. Juli 2022, 22:59 Ist der letzte Satz ironisch gemeint?
Hier und in den folgenden Seiten wird viel über Farben beschrieben.


Grüße
Dennis

Re: Färbung von Liniengraphen nach Kategorie

Verfasst: Mittwoch 27. Juli 2022, 11:57
von __blackjack__
@nichtSoGuter: Ja, das war ironisch gemeint. Die meisten grösseren Projekte aus dem Numpy-Umfeld, so auch Matplotlib, haben eine gute, umfangreiche Dokumentation. Üblicherweise mit einem Übersichtsteil, Einsteigertutorial, Handbuch wo nach Themengebieten geordnet ist, und dann noch eine API-Referenz. Alles mit vielen Beispielen, und in der Regel auch alles untereinander verlinkt, so dass Funktionen und Klassen überall Links auf deren Eintrag in der API-Referenz sind, und das in der API-Referenz Links zu passenden Abschnitten im Benutzerhandbuch und eventuell Tutorials sind, und so weiter. Bei Matplotlib kommt da dann noch eine umfangreiche Beispielgallerie dazu, deren Beispiele ebenfalls oft in beide Richtungen mit anderen Teilen der Dokumentation verlinkt sind.

Die Seite die ich im Kopf hatte war das Tutorial zu Farben: https://matplotlib.org/stable/tutorials ... olors.html

Re: Färbung von Liniengraphen nach Kategorie

Verfasst: Mittwoch 27. Juli 2022, 12:58
von nichtSoGuter
Danke euch! Was c übergeben werden muss habe ich nun verstanden.

Die Frage wäre aber noch halb offen.
Ich möchte ja die verschiedenen Graphen je nach Kategorie färben. Mit dem letzten Code, wo ich den verschiedenen Kategorien farben zuordne, komme ich leider auch nicht weiter. Wie würdet ihr es anstellen?

Vielen Dank im Voraus!

Re: Färbung von Liniengraphen nach Kategorie

Verfasst: Mittwoch 27. Juli 2022, 14:29
von __blackjack__
Dazu müsstest Du die Kategorienummern auf Farbangaben abbilden. Also beispielsweise mit der `map()`-Methode vom `Series`-Objekt.