1

当我尝试创建一个值在 -2 到 10 之间的简单 pcolor 图时,默认 pcolor 和 colorbar 仅使用从 -2 到 2 的颜色图,从而显示错误的颜色。

这是一个工作示例:

import numpy as np
from matplotlib import pyplot as plt

m = np.array([[ 0.9, 2., 2., 1.8],
              [ -0.8, 0.1, -0.6, -2],
              [ -0.1, -2, -2, -0.06],
              [ 3, 4, 7, 10]])

x = [0, 1, 2, 3]
y = [0, 1, 2, 3]
xv,yv = np.meshgrid(x,y)

fig = plt.figure()
ax = fig.add_subplot(111)
print m.min(),m.max()
cax = ax.pcolormesh(xv,yv,m, cmap='viridis')
cbar = fig.colorbar(cax)
plt.show()

我会包含一张图片,但在 stackoverflow 上没有足够的声誉

4

2 回答 2

0

这是你希望的结果吗?

import numpy as np
from matplotlib import pyplot as plt

m = np.array([[ 0.9, 2., 2., 1.8],
              [ -0.8, 0.1, -0.6, -2],
              [ -0.1, -2, -2, -0.06],
              [ 3, 4, 7, 10]])

x = [0, 1, 2, 3]
y = [0, 1, 2, 3]
xv,yv = np.meshgrid(x,y)

fig = plt.figure()
ax = fig.add_subplot(111)
print m.min(),m.max()
cax = ax.pcolormesh(xv,yv,m, cmap='viridis', vmin=-2, vmax=10)
cbar = fig.colorbar(cax)
plt.show()
于 2017-06-01T15:25:14.163 回答
0

您需要为 x 和 y 添加另一个值,因为它仅在网格值之间的范围内绘制值(绘制 0-1、1-2、2-3、3-4 的图像值),如下所示:

import numpy as np
from matplotlib import pyplot as plt

m = np.array([[ 0.9, 2., 2., 1.8],
              [ -0.8, 0.1, -0.6, -2],
              [ -0.1, -2, -2, -0.06],
              [ 3, 4, 7, 10]])

x = [0, 1, 2, 3, 4]  # added the 4
y = [0, 1, 2, 3, 4]  # added the 4
xv,yv = np.meshgrid(x,y)

fig = plt.figure()
ax = fig.add_subplot(111)
print m.min(),m.max()
cax = ax.pcolormesh(xv,yv,m, cmap='viridis')
cbar = fig.colorbar(cax)
plt.show()

您的示例仅使用每个维度的前 3 个值,因此整个范围是从 -2 到 2。通过再添加一个值,您可以使用整个矩阵。

于 2017-06-01T15:27:30.157 回答