正如在这个示例代码中可以看到的那样,由于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()
修改 在@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()
我仍然不知道如何区分零!
答案 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()
答案 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