创建此类颜色图的最简单方法是通过LinearSegmentedColormap.from_list('', ['b', 'k', 'k', 'r'])。这会均匀地划分颜色,因此纯黑色占据范围的 1/3rd。
该函数还允许通过 (position, color) 和 position 形式的元组来定位颜色,范围从左侧(底部)的 0 到右侧(顶部)的 1 )。下面是一个黑色占据 10% 范围的示例。
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
from matplotlib.cm import ScalarMappable
import numpy as np
cmap1 = LinearSegmentedColormap.from_list('', ['b', 'k', 'k', 'r'])
plt.colorbar(ScalarMappable(cmap=cmap1), orientation='horizontal',
ticks=np.linspace(0,1,11), label='pure black occupies 1/3rd')
width = 0.1
cmap2 = LinearSegmentedColormap.from_list('', [(0, 'b'), ((1 - width) / 2, 'k'), ( (1 + width) / 2, 'k'), (1, 'r')])
plt.colorbar(ScalarMappable(cmap=cmap2), orientation='horizontal',
ticks=np.linspace(0,1,11), label=f'pure black occupies {width}')
plt.show()