Färbung von Liniengraphen nach Kategorie

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
nichtSoGuter
User
Beiträge: 92
Registriert: Mittwoch 13. April 2022, 17:40

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
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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…
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
nichtSoGuter
User
Beiträge: 92
Registriert: Mittwoch 13. April 2022, 17:40

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
Benutzeravatar
Dennis89
User
Beiträge: 1562
Registriert: Freitag 11. Dezember 2020, 15:13

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
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
nichtSoGuter
User
Beiträge: 92
Registriert: Mittwoch 13. April 2022, 17:40

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!
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Dazu müsstest Du die Kategorienummern auf Farbangaben abbilden. Also beispielsweise mit der `map()`-Methode vom `Series`-Objekt.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten