在 python 中将 pcolormesh 与 3 个一维数组一起使用

Jac*_*els 5 python matplotlib python-2.7 python-3.x colorbar

我正在尝试使用 pcolormesh 绘制 3 个填充坐标和值的一维数组。下面的数组只是示例,但它们遵循相同的原则。我有 3 个数组,一个用于 x 坐标,一个用于 y 坐标,一个用于它们的值(或 z)。每个索引对应一个位置。索引 0 对应于 x 1、y 1 和 z 6。这适用于所有索引。

x = [1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4]
y = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4]
z = [6,2,3,5,8,2,3,2,4,2,3,6,7,3,3,2]
plt.figure()
plt.pcolor(x,y,z)
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)

我也尝试过...

x = [1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4]
y = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4]
z = [6,2,3,5,8,2,3,2,4,2,3,6,7,3,3,2]
N = np.sqrt(len(x))
N = int(N)
np.reshape(x,(N,N))
np.reshape(y,(N,N))
np.reshape(z,(N,N))
plt.pcolormesh(x,y,c=z)
plt.show()
Run Code Online (Sandbox Code Playgroud)

似乎什么都不起作用。发送帮助

Spg*_*tCd 1

你的第二次尝试是正确的方向 - 除了两件事:

  • np.reshape 返回重塑后的数组,它不应用于数组参数。
  • 如果你想按名称指定第三个 kwarg - 它是大写C而不是小写c

所以这有效:

x = [1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4]
y = [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4]
z = [6,2,3,5,8,2,3,2,4,2,3,6,7,3,3,2]
x = np.reshape(x,(4, 4))
y = np.reshape(y,(4, 4))
z = np.reshape(z,(4, 4))
plt.pcolormesh(x, y, z)
Run Code Online (Sandbox Code Playgroud)

然而,读起来更清晰的可能是这样的:

x, y = np.meshgrid(range(4), range(4))
z = [6, 2, 3, 5, 8, 2, 3, 2, 4, 2, 3, 6, 7, 3, 3, 2]
z = np.reshape(z, (4, 4))
plt.pcolormesh(x, y, z)
Run Code Online (Sandbox Code Playgroud)

meshgrid这就是为此而设计的用例。