ポイント x と y の範囲が numpy 配列に格納されています。これらは x(t) と y(t) を表し、ここで t=0...T-1
を使用して散布図をプロットしています
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()
時間を表すカラーマップが必要です(したがって、numpy 配列のインデックスに応じてポイントを色付けします)
そうする最も簡単な方法は何ですか?
ポイント x と y の範囲が numpy 配列に格納されています。これらは x(t) と y(t) を表し、ここで t=0...T-1
を使用して散布図をプロットしています
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()
時間を表すカラーマップが必要です(したがって、numpy 配列のインデックスに応じてポイントを色付けします)
そうする最も簡単な方法は何ですか?
ここに例があります
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(100)
y = np.random.rand(100)
t = np.arange(100)
plt.scatter(x, y, c=t)
plt.show()
t
ここでは、 の配列であるインデックス に基づいて色を設定しています[1, 2, ..., 100]
。
おそらく、より理解しやすい例は、もう少し単純なものです
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
plt.scatter(x, y, c=t)
plt.show()
as として渡す配列c
は、特定の順序や型を持つ必要がないことに注意してください。つまり、これらの例のように、並べ替えや整数である必要はありません。プロット ルーチンは、最小値/最大値がc
カラーマップの下部/上部に対応するようにカラーマップをスケーリングします。
追加することでカラーマップを変更できます
import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)
matplotlib.cm
カラーマップも同様に呼び出すことができるため、インポートはオプションですcmap="cmap_name"
。それぞれがどのように見えるかを示すカラーマップの参照ページがあります。また、カラーマップを として呼び出すだけで反転できることも知っておいてくださいcmap_name_r
。だからどちらか
plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
# or
plt.scatter(x, y, c=t, cmap="cmap_name_r")
動作します。例は"jet_r"
またはcm.plasma_r
です。新しい 1.5 カラーマップ viridis の例を次に示します。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
plt.show()
を使用してカラーバーを追加できます
plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()
Figureとサブプロットを明示的に使用している場合 (例:fig, ax = plt.subplots()
またはax = fig.add_subplot(111)
)、カラーバーの追加はもう少し複雑になる可能性があることに注意してください。単一のサブプロット カラーバーの場合はこちら、2 つのサブプロット 1 カラーバーの場合はこちらで良い例を見つけることができます。
上記のwflynnyの回答に追加するには、利用可能なカラーマップをここで見つけることができます
例:
import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.jet)
または代わりに、
plt.scatter(x, y, c=t, cmap='jet')