使用Python和matplotlib,有一种方便的方法来执行以下操作:
建立颜色和值之间的映射,例如-5 =黑色,-2 =红色,0 =白色,+ 2 =蓝色,+ 5 =黑色
生成一个在这些值之间插值的颜色图,类似于matplotlib.colors.LinearSegmentedColormap.from_list()
制作伪彩色图pcolormesh(X,Y,Z)
,其中0 < Z&lt; 3使用上面建立的颜色编码。这意味着将仅使用色彩映射的子集。 (由于没有负值,因此永远不会使用红色。)
添加范围为0到3的颜色条。
这样可以使多个图中的值和颜色之间的映射保持一致。
答案 0 :(得分:0)
您需要为LinearSegmentedColormap制作自定义色彩映射表。 LinearSegmentedColormap docs:
中给出了如何理解下面的色彩映射字典的解释# Create the desired color dictionary
cdict = { 'red' : ((0.0, 0.0, 0.0),
(0.3, 1.0, 1.0),
(0.5, 1.0, 1.0),
(0.7, 0.0, 0.0),
(1.0, 0.0, 0.0)),
'green' : ((0.0, 0.0, 0.0),
(0.3, 0.0, 0.0),
(0.5, 1.0, 1.0),
(0.7, 0.0, 0.0),
(1.0, 0.0, 0.0)),
'blue' : ((0.0, 0.0, 0.0),
(0.3, 0.0, 0.0),
(0.5, 1.0, 1.0),
(0.7, 1.0, 1.0),
(1.0, 0.0, 0.0)),
}
# Create a colormap from the above dictionary
cmap = LinearSegmentedColormap('CustomColormap', cdict, 1024)
# Use the colormap in your plot
contour = pcolormesh(X,Y,Z,cmap=cmap)
# Supply the contour to the colorbar
colorbar(contour)
基本上,色彩映射只能存在于0-1之间,因此,如果颜色变化发生在-5,-2,0,2和5,则需要点为0(-5),0.3( - 2),0.5(0),0.7(2)和1(5)。
要获得所需的效果,您需要确保绘制范围为-5到5,但是然后将颜色条设置为仅显示0到3。