matplotlibでは、特定の値の間隔でカラーバーの色を変更したいと思います。たとえば、地震のカラーバーを変更して、-0.5と0.5の間の値が白くなるようにしたいのですが、どうすればいいですか?カラーバーの色を(特定の値の間隔で)変更するにはどうすればよいですか?
あなたは基本的にあなたがしたい特定の機能を持っている独自のカラーマップを作成する必要があり、非常に
matplotlibでは、特定の値の間隔でカラーバーの色を変更したいと思います。たとえば、地震のカラーバーを変更して、-0.5と0.5の間の値が白くなるようにしたいのですが、どうすればいいですか?カラーバーの色を(特定の値の間隔で)変更するにはどうすればよいですか?
あなたは基本的にあなたがしたい特定の機能を持っている独自のカラーマップを作成する必要があり、非常に
をお願いします。もちろん、既存のカラーマップを利用することも可能です。
カラーマップは常に0
と1
の間にあります。この範囲はデータ間隔にマッピングされます。したがって、-0.5
と0.5
の間に白を作成するには、データの範囲を知る必要があります。データが-1
から1
になるとします。地震探査マップの下位部分(青色部分)を-1
から-0.5
に移動させると、白は-0.5
と+0.5
の間にあり、最後に地震マップ(赤色)の上部は0.5
から1
になります。カラーマップの言語では、これは範囲[0,0.25]
,[0.25, 0.75]
および[0.75,1]
に対応します。最初と最後の25%が地震地図の色で、中間の50%が白であるリストを作成することができます。
このリストは、matplotlib.colors.LinearSegmentedColormap.from_list("colormapname", listofcolors)
を使用してカラーマップを作成するために使用できます。より一般的な例については
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
n=50
x = 0.5
lower = plt.cm.seismic(np.linspace(0, x, n))
white = plt.cm.seismic(np.ones(100)*0.5)
upper = plt.cm.seismic(np.linspace(1-x, 1, n))
colors = np.vstack((lower, white, upper))
tmap = matplotlib.colors.LinearSegmentedColormap.from_list('terrain_map_white', colors)
x = np.linspace(0,10)
X,Y = np.meshgrid(x,x)
z = np.sin(X) * np.cos(Y*0.4)
fig, ax = plt.subplots()
im = ax.imshow(z, cmap=tmap)
plt.colorbar(im)
plt.show()
、あなたは(matplotlib.colors.Normalize
を使用して)色の正規化が必要な場合があります。例えば、 this example。カラーマップ内の特定の色は、データ範囲とは関係なく常に0のデータ値に固定されます。
投稿できるコードを書いてありますか? –