MatplotLib.colors.Colors.Lognormのゼロの問題
-
13-11-2019 - |
質問
を使ってヒストグラムをプロットしています
plt.imshow(hist2d, norm = LogNorm(), cmap = gray)
.
hist2d
はヒストグラム値のマトリックスです。これは、ゼロのhist2d
の要素を除いて機能します。特に、次の画像を入手します。
しかし白いパッチは黒くなることを望みます。
ありがとうございました!
解決
これは、悪いピクセルのためのRGB値を設定することによってあなたのデータでマックする必要がない代替方法です。
import copy
data = np.arange(25).reshape((5,5))
my_cmap = copy.copy(matplotlib.cm.get_cmap('gray')) # copy the default cmap
my_cmap.set_bad((0,0,0))
plt.imshow(data,
norm=matplotlib.colors.LogNorm(),
interpolation='nearest',
cmap=my_cmap)
.
問題は、0
を持つビンが正しく正規化できないように正しく正規化できないため、異なるようにマッピングされていることです。デフォルトの動作は、それらのピクセルに何も描画されないことです。カラーマップの範囲内または制限の下にあるピクセルを描画する色を指定することもできます(デフォルトはそれらを最高/最小の色として描画します)。
他のヒント
色のスケーリングに満足していて、0の値を黒くするだけでは、0が次の最小値に置き換えられるように入力行列を変更するだけです。
import matplotlib.pyplot as plt
import matplotlib.cm, matplotlib.colors
import numpy
hist2d = numpy.arange(9).reshape(3,3)
plt.imshow(numpy.maximum(hist2d, sorted(hist2d.flat)[1]),
interpolation='nearest',
norm = matplotlib.colors.LogNorm(),
cmap = matplotlib.cm.gray)
.
生産
mimimum Picture">
これはMATPLOTLIB HIST2D機能を用いて生成された
行列を通過して任意のフロア値を設定してから、必ず定型範囲でプロットすることを必ずプロットするだけです。
for f in hist2d:
f += 1e-3
.
次に、図を表示すると、すべての空白はフロア値になり、LOGNORMALのプロットに表示されます。ただし、HEST2Dに自動的にスケーリングを選択させている場合は、1E-3階値を最小として使用します。これを回避するには、hist2d でVMIN値とVMAX値を設定する必要があります。
hist2d(x,y,bins=40, norm=LogNorm(), vmin=1, vmax=1e4)
. 所属していません StackOverflow