matplotlibでplotの線の色を変更する方法
pythonを用いて、plotの線の色を変更したいです。
一般的な、「赤」「青」などの一色の線に変更するやり方はわかりますが、
線の途中である値に対して、線が赤になったり青になったりすることは可能でしょうか?
以下に自作したscriptを示して、具体的になにを行いたいかを示します。
from pylab import *
import random
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
movements = np.arange(200)
##Storage information
traceXs, traceYs = [], [];
Speeds = [];
Times = [];
for trial in range(0, 1):
###moment information
cur_x, cur_y = 0, 0;
nxt_x, nxt_y = 0, 0;
s = 100.0;
traceXs.append(cur_x);
traceYs.append(cur_y);
Times.append(0);
Speeds.append(s);
for t in movements:
"""
Section for trace movements
"""
###trace position of movement
r = random.randint(0, 3)
if r == 0:
nxt_x, nxt_y = cur_x+1, cur_y;
elif r == 1:
nxt_x, nxt_y = cur_x, cur_y+1;
elif r == 2:
nxt_x, nxt_y = cur_x, cur_y-1;
elif r == 3:
nxt_x, nxt_y = cur_x-1, cur_y;
traceXs.append(nxt_x);
traceYs.append(nxt_y);
#update the position for next step
cur_x, cur_y = nxt_x, nxt_y;
"""
Section for trace movements
"""
direction = random.randint(0, 1)
r2 = random.random();
if direction == 0:
s += r2;
elif direction == 1:
s -= r2;
Times.append(t);
Speeds.append(s);
plt.figure()
plt.plot(traceXs, traceYs)
plt.figure()
plt.scatter(Times, Speeds, s=1, c=Speeds, cmap='bwr')
plt.figure()
plt.scatter(traceXs, traceYs, s=1, c=Speeds, cmap='bwr')
plt.colorbar()
x_range = 1.1*max(abs(min(traceXs)), max(traceXs));
y_range = 1.1*max(abs(min(traceYs)), max(traceYs));
range_ = max(x_range, y_range)
plt.xlim(-range_, range_)
plt.ylim(-range_, range_)
plt.show()
上記のscriptはrandom walkをトレースする図(図1)を作成します。
この図1にスピードの変化を表す色をつけたいです。(実際にはrandom walkは一定のスピードで進むのは分かっています。)
図2では移動スピードを別に計算して、それを作図したものを示します。(色はスピードの早さにより変わるようになっています。)
図2で示した色を、図1でも表示したいのですが、作成方法がわかりません。
自分で行えたのは、図3で示したようにscatter plotを使用して、それっぽくは表示してありますが、やはり線でつながれた状態で、色をつけたいです。
もしご存知の方がおられましたら、ご教授をお願いします。