我正在使用绘制直方图

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)
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top