我密謀使用問題與零點在matplotlib.colors.LogNorm
plt.imshow(hist2d, norm = LogNorm(), cmap = gray)
其中hist2d
是直方圖值矩陣的直方圖。這工作正常,除了hist2d
爲零的元素。特別是,我得到下面的圖像
但想白色斑塊爲黑色。
謝謝!
我密謀使用問題與零點在matplotlib.colors.LogNorm
plt.imshow(hist2d, norm = LogNorm(), cmap = gray)
其中hist2d
是直方圖值矩陣的直方圖。這工作正常,除了hist2d
爲零的元素。特別是,我得到下面的圖像
但想白色斑塊爲黑色。
謝謝!
如果你滿意的顏色比例原樣,且只想在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)
產生
,不需要通過設置壞像素的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
箱不能正常登錄規範化所以他們已檢舉爲「壞」,其分別對應不同。默認行爲是不在這些像素上繪製任何東西。您還可以指定繪製超過或低於顏色貼圖限制的像素的顏色(默認情況下將其繪製爲最高/最低顏色)。
這是用matplotlib hist2d函數生成的嗎?
所有你需要做的就是去通過矩陣並設置一些任意的本底值,然後確保有固定的限制繪製該
for f in hist2d:
f += 1e-3
那麼當你展示圖中,所有的空白將現達到最低值,並顯示在對數正態圖上。但是,如果您讓hist2d自動爲您選擇縮放比例,則需要使用1e-3樓層值作爲最小值。爲避免這種情況,需要在hist2d中設置vmin和vmax值
hist2d(x,y,bins=40, norm=LogNorm(), vmin=1, vmax=1e4)