0

使用 Python 和 matplotlib,是否有一种方便的方法来执行以下操作:

  1. 建立颜色和值之间的映射,例如 -5 = 黑色、-2 = 红色、0 = 白色、+2 = 蓝色、+5 = 黑色

  2. 生成在这些值之间进行插值的颜色图,类似于 matplotlib.colors.LinearSegmentedColormap.from_list()

  3. pcolormesh(X,Y,Z)使用上面建立的颜色编码制作一个伪彩色图,其中 0 < Z < 3。这意味着只会使用颜色图的一个子集。(永远不会使用红色,因为没有负值。)

  4. 添加一个范围从 0 到 3 的颜色条。

这将允许在多个绘图中保持值和颜色之间的映射一致。

4

1 回答 1

0

您需要为 LinearSegmentedColormap 制作自定义颜色图。LinearSegmentedColormap 文档中给出了如何理解下面的颜色图字典的解释:

# 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。

于 2013-05-30T02:00:15.083 回答