numpy配列に格納されたポイントxとyの範囲があります。これらは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()
渡す配列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()
図とサブプロットを明示的に(fig, ax = plt.subplots()
またはax = fig.add_subplot(111)
)使用している場合は、カラーバーの追加が少し複雑になる可能性があることに注意してください。良い例は、単一のサブプロットカラーバーについてはここにあり、2つのサブプロット1カラーバーについてはここにあります。
cm.colormap_name
とcm.cmapname
の実際の変数はありませんmatplotlib.cm
。それだけのための擬似コードだcm.jet
かcm.veridis_r
など、
cmap
またはc
リストを変更する方法はありますか?
サブプロットカラーバー
スキャッターのあるサブプロットの場合、2番目の図を使用して「マップ可能」を作成し、それを元のプロットに追加することで、カラーバーを軸に騙すことができます。
上記の例の続きとして:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
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')
# Build your secondary mirror axes:
fig2, (ax3, ax4) = plt.subplots(1, 2)
# Build maps that parallel the color-coded data
# NOTE 1: imshow requires a 2-D array as input
# NOTE 2: You must use the same cmap tag as above for it match
map1 = ax3.imshow(np.stack([t, t]),cmap='viridis')
map2 = ax4.imshow(np.stack([t, t]),cmap='viridis_r')
# Add your maps onto your original figure/axes
fig.colorbar(map1, ax=ax1)
fig.colorbar(map2, ax=ax2)
plt.show()
無視できる二次図も出力することに注意してください。
plt.colorbar()
コマンドを使用して、色の凡例を取得できます。