【发布时间】:2014-10-19 11:12:47
【问题描述】:
我正在尝试绘制一个包含正数和负数的矩阵。这些数字将在 -1 到 1 的区间内,但不在完整范围内。例如,数字有时可能在 -0.2 到 +0.8 的范围内(参见下面的代码)。 我想使用 bwr-colormap (blue -> white - red),这样零总是用白色进行颜色编码。 -1 应该用最深的蓝色进行颜色编码,+1 应该用最深的红色进行颜色编码。这里有一个例子,两个图只能通过颜色条来区分。
import numpy
from matplotlib import pyplot as plt
# some arbitrary data to plot
x = numpy.linspace(0, 2*numpy.pi, 30)
y = numpy.linspace(0, 2*numpy.pi, 20)
[X, Y] = numpy.meshgrid(x, y)
Z = numpy.sin(X)*numpy.cos(Y)
fig = plt.figure()
plt.ion()
plt.set_cmap('bwr') # a good start: blue to white to red colormap
# a plot ranging from -1 to 1, hence the value 0 (the average) is colorcoded in white
ax = fig.add_subplot(1, 2, 1)
plt.pcolor(X, Y, Z)
plt.colorbar()
# a plot ranging from -0.2 to 0.8 hence 0.3 (the average) is colorcoded in white
ax = fig.add_subplot(1, 2, 2)
plt.pcolor(X, Y, Z*0.5 + 0.3) # rescaled Z-Data
plt.colorbar()
这段代码创建的图可以看这里:
如上所述,我正在寻找一种始终使用相同颜色对值进行颜色编码的方法,其中 -1:深蓝色,0:白色,+1:深红色。这是一个单行字,我错过了什么还是我必须自己为此写一些东西?
编辑:
在挖掘了一点点之后,我自己找到了一个令人满意的答案,没有触摸颜色图,而是使用pcolor 的可选输入(见下文)。
不过,我不会删除该问题,因为在我发布此问题并单击相关问题/答案之前,我无法在 SO 上找到答案。另一方面,如果它被删除,我不介意,因为如果您正在寻找正确的关键字,可以在其他地方找到这个问题的答案。
【问题讨论】:
标签: python matplotlib colors