如何在Python Matplotlib中为pcolor设置固定颜色条?

2 投票
1 回答
2560 浏览
提问于 2025-04-15 23:55

我正在使用 pcolor 和自定义的颜色映射来绘制一个数值矩阵。我设置的颜色映射是低值为白色,高值为红色,如下所示。我的所有矩阵的值都在 0 到 20 之间(包括 0 和 20),我希望 20 始终是纯红色,而 0 始终是纯白色,即使矩阵的值没有覆盖整个范围。例如,如果我的矩阵只有 2 到 7 之间的值,我不想让它把 2 显示为白色,7 显示为红色,而是希望它的颜色看起来就像范围仍然是 0 到 20。请问我该怎么做?我尝试使用 colorbar 的 "ticks=" 选项,但没有成功。

这是我目前的代码(假设 "my_matrix" 包含要绘制的值):

cdict = {'red': ((0.0, 1.0, 1.0),
         (0.5, 1.0, 1.0),
         (1.0, 1.0, 1.0)),
     'green': ((0.0, 1.0, 1.0),
           (0.5, 1.0, 1.0),
           (1.0, 0.0, 0.0)),
     'blue': ((0.0, 1.0, 1.0),
          (0.5, 1.0, 1.0),
          (1.0, 0.0, 0.0))}
my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap', cdict, 256)
colored_matrix = plt.pcolor(my_matrix, cmap=my_cmap)
plt.colorbar(colored_matrix, ticks=[0, 5, 10, 15, 20])

有没有什么办法可以修正这个问题,以获得正确的结果?非常感谢。

1 个回答

2

我猜测:你的颜色映射可能没问题。试着在绘图时调整一下 vminvmax 的值。

pylab.imshow(im, vmin=0, vmax=20)

撰写回答