繁体   English   中英

将白色添加到pylab colorbar默认色彩映射

[英]add white color to pylab colorbar default colormap

嗨,我有以下代码:

rateMap, occMap, spikeMap = pickle.load(open(rateMapFileName))

pl.imshow(rateMap)
pl.colorbar()

现在,occMap是包含多个时间戳的x,y位置的占用地图。 有一些点x,y位置没有占用(即在该矩阵值处= 0值)

当我使用上面的脚本绘制rateMap(这是= spikeMap / occMap)时。 生成的颜色条使用默认的jetmap色彩映射。 我希望occMap中的null / 0值在rateMap图中显示为白色 那么无论如何要为colorbar函数添加零? 并将其与occMap联系起来

我试过看这个脚本如何在matplotlib colormap中添加“black”? 但无法让它工作?

这是一个示例图像,其中白点基本上是指x,y位置,0值或没有占用:

在此输入图像描述

*****编辑****我尝试使用代码,这里是我如何添加白色到colormap但我想将此白色添加到默认的喷射色彩映射。 有什么建议么??

cmap = LinearSegmentedColormap.from_list('mycmap', ['white', 'blue', 'cyan', 'green', 'yellow','red'])
fig, ax = plt.subplots()
im = ax.imshow(im, cmap=cmap, interpolation='nearest')
fig.colorbar(im)
plt.show()

对于您的问题,我建议将第一级设置为大于零,并使用colorbar的扩展功能指定零x,y位置。

首先我们导入libs并尝试在稀疏网格上从numpy的正态分布函数生成一些随机数据。

from copy import copy

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors

# generate sample data
x0, x1 = -5, 5
y0, y1 = -3, 3
x = np.linspace(x0, x1, 60)
y = np.linspace(y0, y1, 60)
X, Y = np.meshgrid(x, y)
Z = np.random.randn(60, 60)

为了说明您的问题,我们将所有负值设置为零,渲染非负网格数据Z

Z = np.where(Z > 0, Z, 0)

现在谈到关键点! 只需为色彩图添加超出范围的颜色即可。

palette = copy(plt.get_cmap('viridis_r'))
palette.set_under('white', 1.0)  # 1.0 represents not transparent

您还可以使用set_overset_bad方法为超量程数据和未定义(NaN)数据设置颜色。

设置子图:

fig, ax = plt.subplots(1, 1)

设置绘图的级别,但要记住将最低级别修改为接近零的正数。

levels = np.arange(0, 3.5, 0.5)
levels[0] = 1e-5

这是绘制阵列Z的方法。

norm = colors.BoundaryNorm(levels, ncolors=palette.N)
im = ax.imshow(Z, cmap=palette,
               norm=norm,
               aspect='auto', extent=[x0, x1, y0, y1])
# Possible extend options include: ['min', 'max', 'both', 'neither']
cbar = fig.colorbar(im, extend='min', shrink=0.9, ax=ax)
plt.savefig('draw.png', dpi=300)
# or
# plt.show()

draw.png

将最低级别显示为0.0可能会导致一些歧义,可能将级别[0]设置为0.1看起来更好。

您可以参考以下链接了解更多信息:

https://matplotlib.org/examples/pylab_examples/image_masked.html

https://matplotlib.org/examples/pylab_examples/contourf_demo.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM