Colorplot区分正值和负值

时间:2014-06-02 11:58:42

标签: python matplotlib

正如在这个示例代码中可以看到的那样,由于0位于频谱中的某个位置,因此难以追踪哪些点是负数,哪些点是正数。虽然我的真实情节更加连续,但我想知道是否有办法在这些clorplots中分离负面和积极的价值观;例如,我如何使用两种不同的颜色光谱作为正值和负值。

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

enter image description here

修改 在@MultiVAC的帮助下寻找解决方案我遇到了this

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

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

enter image description here

2 个答案:

答案 0 :(得分:2)

确定以后的参考。我使用了不同的地图作为@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()

enter image description here

答案 1 :(得分:0)

在matplotlib文档页面上有很多关于简单自定义分段颜色条的很好的示例材料

例如

  

http://matplotlib.org/examples/api/colorbar_only.html   http://matplotlib.org/examples/pylab_examples/contourf_demo.html

编辑:

据我所知,这可能是您所寻找的最佳例子:

  

http://matplotlib.org/examples/pylab_examples/custom_cmap.html