Zeros在Matplotlib.Colors.olognOrm中的问题
-
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值为黑色,我只需更改输入矩阵,以便0s被下一个最小值所替换:
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)
.
生成
mimimumice”>
是使用matplotlib hist2d函数生成的?
所有您需要做的是通过矩阵并设置一些任意底部值,然后务必将其与固定限制绘制
for f in hist2d:
f += 1e-3
.
然后显示该图,所有空格现在都将处于楼层值,并将在LogNormal Plot上显示。但是,如果您让HIST2D会自动选择缩放,则希望将1E-3楼层值与最小值一起使用。为避免这种情况,您需要在HIST2D 中设置VMIN和VMAX值
hist2d(x,y,bins=40, norm=LogNorm(), vmin=1, vmax=1e4)
. 不隶属于 StackOverflow