staticmethod
colors.LinearSegmentedColormap.from_list可用于创建新的LinearSegmentedColormaps。以下,我在0.2和0.8之间的100点采样原始色卡:
cmap(np.linspace(0.2, 0.8, 100))
并使用这些颜色生成一个新的色彩映射:
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import numpy as np
def truncate_colormap(cmap, minval=0.0, maxval=1.0, n=100):
new_cmap = colors.LinearSegmentedColormap.from_list(
'trunc({n},{a:.2f},{b:.2f})'.format(n=cmap.name, a=minval, b=maxval),
cmap(np.linspace(minval, maxval, n)))
return new_cmap
arr = np.linspace(0, 50, 100).reshape((10, 10))
fig, ax = plt.subplots(ncols=2)
cmap = plt.get_cmap('jet')
new_cmap = truncate_colormap(cmap, 0.2, 0.8)
ax[0].imshow(arr, interpolation='nearest', cmap=cmap)
ax[1].imshow(arr, interpolation='nearest', cmap=new_cmap)
plt.show()
左图显示使用原始色彩映射(在本示例中为jet)的图像。右图显示使用new_cmap的相同图像。