2

matplotlib(Win7、1.1.0)で塗りつぶされた等高線図を作成しようとしています。特定の値を強調したいのですが、レベルは線形よりも対数に近いです。

私に合うカラーマップはたくさんありますが、cmapの選択は無視されます。

カスタムの「正規化」を作成する必要がありますか?もしそうなら、各輪郭はそのエッジ値に従って色付けされ、次に同じ色で塗りつぶされて次に低い値になりますか?これの症状が私のカラーマップを無視するのはなぜですか...これは建設中の例外であり、私の要求は黙って無視されていますか?

元のデータに値がありませんでした。私はthisenanを大小さまざまに作って遊んだことがあります...いずれの場合も、「外側」の値をマスクするのではなく、それらをマスクしてみました。また、デフォルトのレベルと標準を使用してすべての順列を試しました。

lev = [0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.normalize(0,32)
cs = plt.contourf(x,z,data,cmap=cm.gray, levels=lev, norm = norml)

このスニペットが少なくとも会話を始めるのに十分であることを願っています。

ありがとう、エリ

4

1 に答える 1

5

私があなたを正しく理解していれば、デフォルトの線形スケーリングではなく、ベースとしてレベルを使用してデータを色に再スケーリングする必要があります。そうであればcolors.BoundaryNorm、標準要素として使用する必要があります。次の例を考えてみましょう。

x = np.arange(0,8,0.1)
y = np.arange(0,8,0.1)
z = (x[:,None]-4) ** 2 + (y[None,:]-4) ** 2

lev = [0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.BoundaryNorm(lev, 256)
cs = plt.contourf(x, y, z, cmap = cm.jet, levels = lev, norm = norml)
plt.show()

これにより、

ここに画像の説明を入力してください

Normalizeデフォルトの動作と比較してください。

ここに画像の説明を入力してください

お役に立てば幸いです。

于 2012-02-17T08:13:50.080 に答える