matplotlib 3. Variable als Farbe

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
drindl
User
Beiträge: 5
Registriert: Sonntag 18. September 2016, 12:53

[codebox=pycon file=Unbenannt.txt][/code]

Ich arbeite mit einem pd.DataFrame. Nun würde ich gerne einen Linien-Plot erstellen mit einer 3. Variable, die als Farbe dargestellt ist.
x = Messzeitpunkte (t1, ..., t5)
y = Werte für (t1, ...,t5)
c =Parameter der durch einen Fragebogen erhoben wurde (Wert von 1-5)
N = 80 Probanden

Ich würde gerne für alle 80 Probanden eine Linie im Plot zeichnen, mit der Farbe die sich durch den Wert c ergibt. Die Farb-Dimension wäre am besten von warm zu kalt.

Mein Code sieht momentan so aus. Jedoch gelingt es mir nicht in diesem Plot die Farbdimension mit aufzunehmen. In einem Scatterplot (ohne die Messzeitpunkt-Dimension [t1,...,t5] klappt es.

Code: Alles auswählen

fig, ax = plt.subplots()
for i in range (len(df.index)):
    y = [df_t1[i], df_t2[i], df_t3[i], df_t4[i], df_t5[i]]
    x = np.array([1, 2, 3, 4, 5])
    color = df_value[i]
    ax.plot(x, y) # (x, y, c = color, cmap='YlGnBu')ergibt natürlich einen Fehler
plt.show()

Vielen Dank für eure Hilfe!
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ich weiß nicht was du da in deinem x, y, color drin hast aber vom Grunde funktioniert das schon, bis auf das cmap.

"ergibt natürlich einen Fehler" ist nicht besonders hilfreich welchen Fehler außer das cmap nicht erlaubt ist gibt es den?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

den thread Ersteller interessiert es scheinbar nicht mehr aber weil ich schon ein Beispiel hatte

Code: Alles auswählen

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
x1 = range(0,10)
x2 = range(1,11)
y = range(20,30)
c = range(5)+range(5)
cmap = np.vectorize(lambda x: {0: 'red', 1: 'blue', 2: 'green', 3: 'cyan', 4: 'magenta', 5: 'yellow'}.get(x))

# marker plot with different color
for i in range(len(y)):
    ax.plot(x1[i], y[i], "x", color=cmap(c)[i])

# horizotal lines
ax.hlines(y, x1, x2, color=cmap(c))

plt.show()
Antworten