2016-04-08 1 views
1

私は、次のデータセットがあります。 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 カラーライン - Pythonの

私は日付に対して価格をプロットしたい: enter image description here

をしかし、私は3番目の変数によって行に色をしたいと思います(私の場合は日付または変更)。

誰でも助けてくれますか?

ありがとうございました。

+0

私はあなたが第三変数によってラインを着色することにより、何を意味するか、次のいませんよ。別の変数がある場合、別の線(別の色かもしれない)または3Dプロットが必要ですか? – mwm314

+0

ラインを1つのカラーで表示したいのですか?あなたはどのように色を選んでいますか? –

+1

私は「3番目の次元のデータ/ 3番目の種類の情報を線のセグメントの色を変えることによって表現したい」と読んでいます。 –

答えて

4

を私は色に指定されたプロパティをマップするために簡単な関数を書いてきました:

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 

この関数は、目的のプロパティを正規化し、ジェットカラーマップから色を取得します。あなたは別のものを使いたいかもしれません。次に、現在の軸を取得し、データの異なるセグメントを別の色でプロットします。私はforループを行っているので、非常に大きなデータセットには使用しないでください。しかし、通常の目的のためには便利です。

はテストとして、次の例を考えてみましょう:

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

この実用的なソリューションを共有してくれてありがとう@Alejandro!完璧に動作します! – Pavel

3

それが役立つだろう場合は、3番目の変数によってデータポイントを色付けできます

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