gpt4 book ai didi

Python 颜色图,但所有零值都映射为黑色

转载 作者:太空狗 更新时间:2023-10-29 20:39:40 24 4
gpt4 key购买 nike

我有一个正方形元素数组,对应于晶格位置。一些元素为零,其余元素在 1 到大约 2700 之间变化。使用 imshow 和 OrRd 颜色图,我希望所有大于 0 的格点都显示相应的颜色,但重要的是,所有值为 0 的点都是显示为黑色。我试过如下定义一个新的颜色映射:

colors = [(0,0,0)] + [(pylab.cm.OrRd(i)) for i in range(1,256)] 
new_map = matplotlib.colors.LinearSegmentedColormap.from_list('new_map', colors, N=256)

但是我的数组中值的范围太大,所以很多非零值显示为黑色。

非常感谢。

最佳答案

Matplotlib 的颜色图有一个 set_badset_under 属性,可用于此目的。此示例显示如何使用 set_bad

import matplotlib.pyplot as plt
import numpy as np

# make some data
a = np.random.randn(10,10)

# mask some 'bad' data, in your case you would have: data == 0
a = np.ma.masked_where(a < 0.05, a)

# cmap = plt.cm.OrRd

# for mpl 3.3 and higher use
cmap = mpl.cm.get_cmap("OrRd").copy()

cmap.set_bad(color='black')

im = plt.imshow(a, interpolation='none', cmap=cmap)

enter image description here

要使用 set_under 变体,您必须将 vmin 关键字添加到绘图命令并且设置略高于零(但低于任何其他有效值):

cmap.set_under(color='black')    
im = plt.imshow(a, interpolation='none', cmap=cmap, vmin=0.0000001)

关于Python 颜色图,但所有零值都映射为黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22548813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com