2016-04-08 5 views
1

Ich habe folgende Datensatz: In[55]: usdbrl Out[56]: Date Price Open High Low Change STD 0 2016-03-18 3.6128 3.6241 3.6731 3.6051 -0.31 0.069592 1 2016-03-17 3.6241 3.7410 3.7449 3.6020 -3.16 0.069041 2 2016-03-16 3.7422 3.7643 3.8533 3.7302 -0.62 0.068772 3 2016-03-15 3.7656 3.6610 3.7814 3.6528 2.83 0.071474 4 2016-03-14 3.6618 3.5813 3.6631 3.5755 2.23 0.070348 5 2016-03-11 3.5820 3.6204 3.6692 3.5716 -1.09 0.076458 6 2016-03-10 3.6215 3.6835 3.7102 3.6071 -1.72 0.062977 7 2016-03-09 3.6849 3.7543 3.7572 3.6790 -1.88 0.041329 8 2016-03-08 3.7556 3.7826 3.8037 3.7315 -0.72 0.013700 9 2016-03-07 3.7830 3.7573 3.7981 3.7338 0.63 0.000000 Farbe Linie durch dritte Variable - Python

Ich möchte Preis gegen Date Grundstück: enter image description here

Aber ich möchte die Linie durch eine dritte Variable färben (in meinem Fall Datum oder Änderung).

Könnte jemand bitte damit helfen?

Danke.

+0

Ich verfolge nicht das, was Sie durch Färben der Linie durch eine dritte Variable bedeuten. Wenn Sie eine andere Variable haben, dann brauchen Sie eine andere (vielleicht eine andere Farbe) oder eine 3D-Darstellung, oder? – mwm314

+0

Möchten Sie die Linie in einer oder mehreren Farben? Wie wählst du die Farbe aus? –

+1

Ich lese es als "Ich möchte eine dritte Dimension von Daten/dritte Art von Informationen durch Ändern der Farbe der Segmente der Linie ausdrücken". –

Antwort

4

Ich habe eine einfache Funktion hat eine bestimmte Eigenschaft in eine Farbe zuordnen:

import matplotlib.cm 
import matplotlib.pyplot as plt 

def plot_colourline(x,y,c): 
    c = cm.jet((c-np.min(c))/(np.max(c)-np.min(c))) 
    ax = plt.gca() 
    for i in np.arange(len(x)-1): 
     ax.plot([x[i],x[i+1]], [y[i],y[i+1]], c=c[i]) 
    return 

Diese Funktion normalisiert die gewünschte Eigenschaft und erhält eine Farbe aus der Jet-Colormap. Vielleicht möchten Sie einen anderen verwenden. Dann holen Sie sich die aktuelle Achse und zeichnen verschiedene Segmente Ihrer Daten mit einer anderen Farbe. Da ich eine for-Schleife mache, sollten Sie es nicht für einen sehr großen Datensatz verwenden, für normale Zwecke ist es jedoch nützlich.

Betrachten Sie das folgende Beispiel als Test:

import numpy as np 
import matplotlib.pyplot as plt 

n = 100 
x = 1.*np.arange(n) 
y = np.random.rand(n) 
prop = x**2 

fig = plt.figure(1, figsize=(5,5)) 
ax = fig.add_subplot(111) 
plot_colourline(x,y,prop) 

enter image description here

+0

Vielen Dank @Alejandro für das Teilen dieser praktischen Lösung! Funktioniert perfekt!!! – Pavel

3

Sie können die Datenpunkte durch eine dritte Variable Farbe, wenn das helfen würde:

dates = [dt.date() for dt in pd.to_datetime(df.Date)] 
plt.scatter(dates, df.Price, c=df.Change, s=100, lw=0) 
plt.plot(dates, df.Price) 
plt.colorbar() 
plt.show() 

enter image description here

Verwandte Themen