如何在Python Matplotlib中为pcolor设置固定颜色条?
我正在使用 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
我猜测:你的颜色映射可能没问题。试着在绘图时调整一下 vmin
和 vmax
的值。
pylab.imshow(im, vmin=0, vmax=20)