したがって、同じ軸上に多くの時系列のプロットを生成するデータの2D配列があります。現時点では、各線の色は循環するだけで、何の意味もありません。
どういうわけか、各線の色をそのデータのインデックスにマッピングしたいので、インデックスの低いデータのセットは赤で表示され、インデックスの高いデータでは青にフェードします。
明確にするために、個々の線は、時間の経過とともに色あせないように、全体を通して同じ色にする必要があります。違いは各行の間にあるはずです。
ありがとうございました!
したがって、同じ軸上に多くの時系列のプロットを生成するデータの2D配列があります。現時点では、各線の色は循環するだけで、何の意味もありません。
どういうわけか、各線の色をそのデータのインデックスにマッピングしたいので、インデックスの低いデータのセットは赤で表示され、インデックスの高いデータでは青にフェードします。
明確にするために、個々の線は、時間の経過とともに色あせないように、全体を通して同じ色にする必要があります。違いは各行の間にあるはずです。
ありがとうございました!
多くの場合、カラーマップをプロット関数に渡しますが、数値または配列をカラーマップに渡して、色を返すこともできます。
したがって、変数に従って各線に色を付けるには、次のようにします。
numlines = 20
for i in np.linspace(0,1, numlines):
plt.plot(np.arange(numlines),np.tile([i],numlines), linewidth=4, color=plt.cm.RdYlBu(i))
plot(x,y,'r')
赤い線の場合
plot(x,y,'b')
青い線の場合
まともなクリスマスのためにもっと色が必要ですか?ここを参照してください。
更新:
あなたが尋ねたように、手動で色を設定するには線が多すぎます。では、これはどうですか?
from matplotlib.pyplot import *
x = list(range(10))
amount = 20
for i in range(amount):
y = [j-i for j in x]
c = [float(i)/float(amount), 0.0, float(amount-i)/float(amount)] #R,G,B
plot(x, y, color=c)
show()
それは与えます:
ここでは、rgbカラーを使用して200の異なる色の配列を取得します。強度で並べ替える時間はありませんが、配列をいくつか印刷すると、その方法がわかるかもしれません。アイデアは、(ソートされた)タプルの合計のインデックスでソートすることです。
#colorwheel
import matplotlib.pyplot as plt
from itertools import permutations
from random import sample
import numpy as np
#Get the color-wheel
Nlines = 200
color_lvl = 8
rgb = np.array(list(permutations(range(0,256,color_lvl),3)))/255.0
colors = sample(rgb,Nlines)
#Plots
x = np.linspace(0,2*np.pi)
for i in range(Nlines):
plt.plot(i*np.cos(x),i*np.sin(x),color=colors[i]) #color from index
plt.savefig("SO_colorwheel.png")
plt.show()
与える
誰かがまだカラーマップを使用せずにパスに沿って曲線に色を付ける方法を探している場合は、それをセグメントに分割して色scatter
を呼び出すのがより良い方法だと思いますcolormap
import matplotlib.pyplot as plt
import numpy as np
def plot_colored(x, y, c, cmap=plt.cm.jet, steps=10):
c = np.asarray(c)
c -= c.min()
c /= c.max()
it=0
while it<с.size-steps:
x_segm = x[it:it+steps+1]
y_segm = y[it:it+steps+1]
c_segm = cmap( c[it+steps//2] )
plt.plot(x_segm, y_segm, c=c_segm)
it += steps
# sample track
t = np.r_[0:10:1000j]
x = t**.25*np.sin(2*np.pi*t)
y = t**.25*np.cos(2*np.pi*t)
plt.figure()
plot_colored(x, y, t)
(ステップが小さいほどスムーズになりますが、遅くなります)