のは、私はこのようなデータを持っているとしましょう:カスタマイズされたカラーマップを作成し、さまざまなデータ範囲で使用する方法は?
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
# for reproducibility purposes
np.random.seed(0)
# generate some data
n = 30
x = np.array(range(n))
a1 = np.random.rand(n)
a2 = a1 * 100
と私は
を与える(this answerの変化)
cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", [(0., '#9696ff'), (0.2, '#f0ffff'), (1.0, '#ff0000')])
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, a1, c=a1, cmap=cmap)
ax2.scatter(x, a2, c=a2, cmap=cmap)
plt.show()
を行うことができ、2つのサブプロットにこれらのデータをプロットしたいです
私の問題は、これらのデータが同じであるように見えますが、右は100倍大きい。
私は両方のプロットに使用できるカラーマップを用意したいと思います。上記と同じコマンドを使用して(代わりに
matplotlib.colors.LinearSegmentedColormap.from_list("", [(0., '#9696ff'), (0.2, '#f0ffff'), (1.0, '#ff0000')])
の私は
min_a1_a2 = min(min(a1), min(a2))
max_a1_a2 = max(max(a1), max(a2))
cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", [(min_a1_a2, '#9696ff'), ((min_a1_a2 + max_a1_a2)/2., '#f0ffff'), (max_a1_a2, '#ff0000')])
のようなものを使用したいと思いますが、これは常に私がscatter
に渡すエラー
ValueError: data mapping points must start with x=0. and end with x=1
になり)。
任意の(値、色)タプルからmatplotlib.colors.LinearSegmentedColormap.from_list
に渡す方法はありますか。 scatter
もしそうなら、どのようにこれを行うでしょうか?
を使用して、ちょうど 'ax1.scatter(X、A 1、C = A1、CMAP = CMAP、VMIN = min_a1_a2 、vmax = max_a1_a2) '(a2のアナログ)?プロットは今、大丈夫です...それは簡単でした、ありがとう! – Cleb