Seite 1 von 1

matplotlib 3. Variable als Farbe

Verfasst: Samstag 8. April 2017, 09:14
von drindl
[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!

Re: matplotlib 3. Variable als Farbe

Verfasst: Montag 10. April 2017, 09:11
von Sr4l
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?

Re: matplotlib 3. Variable als Farbe

Verfasst: Mittwoch 12. April 2017, 08:06
von Sr4l
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()