2016-04-08 20 views
1

Aşağıdaki veri kümesini: 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 Renk hattı - Python

Ben Tarih karşı Fiyatı çizmek istiyorum: enter image description here

Ama üçüncü bir değişken satır renklendirmek istiyorum (Benim durumumda Tarih veya Değişim).

Bu konuda yardımcı olabilecek herhangi biri var mı lütfen?

Teşekkürler.

+0

Sana üçüncü bir değişken satır boyama ile ne demek takip etmiyorum. Başka bir değişkeniniz varsa, başka bir hatta (belki farklı bir renkte) veya bir 3D grafiğe ihtiyacınız var, değil mi? – mwm314

+0

Satırı tek renk mi, yoksa birkaç mu? Rengi nasıl seçersiniz? –

+1

"Satır segmentlerinin rengini değiştirerek üçüncü bir veri/üçüncü tür bilgi boyutunu ifade etmek istiyorum" şeklinde okudum. –

cevap

4

Bir renkle verilen bir özellik eşleştirmek için basit bir fonksiyon yazdım ettik:

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 

Bu işlev istenen özelliği normalleştirir ve jet renk eşlemesinden bir renk alır. Farklı bir tane kullanmak isteyebilirsiniz. Ardından, geçerli ekseni alın ve verilerinizin farklı segmentlerini farklı bir renkle çizin. Çünkü bir for döngüsü yapıyorum, bunu çok büyük bir veri seti için kullanmaktan kaçınmalısınız, ancak normal amaçlar için kullanışlıdır.

bir test olarak şu örneği ele alalım:

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

Bu pratik çözümü paylaştığınız için teşekkürler @Alejandro! Mükemmel çalışıyor!!! – Pavel

3

o yardımcı olacağını eğer üçüncü bir değişken tarafından veri noktalarını renklendirmek olabilir:

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