Python 设置plt外部matplotlib colormap的限制

Python 设置plt外部matplotlib colormap的限制,python,numpy,matplotlib,Python,Numpy,Matplotlib,我目前正在使用python matplotlib来 使用colormapcm.jet将一组要素转换为可视表示,并将其存储为numpy.ndarray。。问题是,我无法设置我想要的vmin和vmax 我现在正在做的是 Type "help", "copyright", "credits" or "license" for more information. >>> import numpy as np >>> import matplotlib >>

我目前正在使用python matplotlib来 使用colormap
cm.jet
将一组要素转换为可视表示,并将其存储为numpy.ndarray。。问题是,我无法设置我想要的vmin和vmax

我现在正在做的是

Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import matplotlib
>>> from matplotlib import cm
>>> import matplotlib.pyplot as plt
>>> a = np.random.randint(5,size=(3,3))
>>> convert = plt.get_cmap(cm.jet)
>>> numpy_a = convert(a)
>>> numpy_a_limited = convert(a)
问题是matplotlib在给定数据集的情况下自动调整颜色范围,这意味着存储的numpy.ndarray的像素信息不正确

我正在尝试修复颜色范围,以便像素信息与原始数据相关

这是我尝试修复颜色范围的尝试

convert = plt.get_cmap(cm.jet)
        convert = convert.set_clim(vmin=-6, vmax=2)
给出我的错误消息:

AttributeError: 'LinearSegmentedColormap' object has no attribute 'set_clim'

为了能够使用colormap,值的范围必须介于0和1之间。超出此范围的值将被截断,从而导致值的动态范围丢失

因此,在将数组提供给colormap之前,需要对其进行规范化。一个选项是使用自定义规范化函数

import matplotlib.pyplot as plt
import numpy as np

a = np.random.randint(5,size=(3,3))
cmap = plt.cm.jet
norm = lambda x: (x+2.)/(6.+2.)
converted_a = cmap(norm(a))
另一个选项是使用内置的Normalize实例

import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
import numpy as np

a = np.random.randint(5,size=(3,3))
cmap = plt.cm.jet
norm = Normalize(vmin=-2, vmax=6)
converted_a = cmap(norm(a))

这个错误是不言自明的。你想要实现什么?你能展示一个或详细解释你的方法,这将使你有必要限制一个彩色地图(这是不可能的顺便说一句)。我补充了一些关于我的问题的细节。