区分正值和负值的色图

发布于 2021-01-29 16:35:03

在此示例代码中可以看到,由于0在频谱中某处,因此很难跟踪哪些点为负,哪些点为正。尽管我的真实情节比较连续,但我想知道是否有办法将这些克洛普图中的负值和正值分开。例如,如何将两个不同的颜色光谱用于正值和负值。

import numpy as np
from matplotlib import pyplot as plt
a=np.random.randn(2500).reshape((50,50))
plt.imshow(a,interpolation='none')
plt.colorbar()
plt.show()

在此处输入图片说明

编辑
在@MultiVAC的帮助下,寻找解决方案时遇到了这个问题

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.colors import BoundaryNorm
a=np.random.randn(2500).reshape((50,50))

# define the colormap
cmap = plt.cm.jet
# extract all colors from the .jet map
cmaplist = [cmap(i) for i in range(cmap.N)]
# create the new map
cmap = cmap.from_list('Custom cmap', cmaplist, cmap.N)

# define the bins and normalize
bounds = np.linspace(np.min(a),np.max(a),5)
norm = BoundaryNorm(bounds, cmap.N)

plt.imshow(a,interpolation='none',norm=norm,cmap=cmap)
plt.colorbar()
plt.show()

我仍然不知道如何区分零!

在此处输入图片说明

关注者
0
被浏览
168
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    好的,以备将来参考。正如@tcaswell建议的那样,我使用了发散地图作为它的一部分。您可以查看以上链接。

    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib.colors import BoundaryNorm
    a=np.random.randn(2500).reshape((50,50))
    
    # define the colormap
    cmap = plt.get_cmap('PuOr')
    
    # extract all colors from the .jet map
    cmaplist = [cmap(i) for i in range(cmap.N)]
    # create the new map
    cmap = cmap.from_list('Custom cmap', cmaplist, cmap.N)
    
    # define the bins and normalize and forcing 0 to be part of the colorbar!
    bounds = np.arange(np.min(a),np.max(a),.5)
    idx=np.searchsorted(bounds,0)
    bounds=np.insert(bounds,idx,0)
    norm = BoundaryNorm(bounds, cmap.N)
    
    plt.imshow(a,interpolation='none',norm=norm,cmap=cmap)
    plt.colorbar()
    plt.show()
    

    在此处输入图片说明



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看