我有想要使用非线性色彩图用contourf/tricontourf绘制的数据.
我发现了一个脚本(见下文),只要级别介于0和正数之间,就可以为色彩图提供一个很好的解决方案.
但是,我的数据是负数(介于-50和0之间).不幸的是,根据我的情况调整水平根本不起作用(见图,子图3).那么有什么我需要考虑的吗?有没有人对我有任何建议,甚至可能遇到同样的问题?
我将衷心感谢您的帮助.
from pylab import *
from numpy import *
from matplotlib.colors import LinearSegmentedColormap
class nlcmap(LinearSegmentedColormap):
"""A nonlinear colormap"""
name = 'nlcmap'
def __init__(self, cmap, levels):
self.cmap = cmap
self.monochrome = self.cmap.monochrome
self.levels = asarray(levels, dtype='float64')
self._x = self.levels/ self.levels.max()
self.levmax = self.levels.max()
self.levmin = self.levels.min()
self._y = linspace(self.levmin, self.levmax, len(self.levels))
def __call__(self, xi, alpha=1.0, **kw):
yi = interp(xi, self._x, self._y)
return self.cmap(yi/self.levmax, alpha)
if __name__ == '__main__':
y, x = mgrid[0.0:3.0:100j, 0.0:5.0:100j]
H = 50.0 * exp( …Run Code Online (Sandbox Code Playgroud)