如何使用3个数组进行彩色2D网格

时间:2017-04-25 17:44:05

标签: python arrays matplotlib colors grid

我有三个长度相等的x,y和z数组。 x和y数组是网格的x轴和y轴。 z数组将确定网格块的颜色。例如,

x = [10, 10, 10, 20, 20, 20, 30, 30, 30]
y = [10, 20, 30, 10, 20, 30, 10, 20, 30]
z = [100, 54, 32, 67, 71, 88, 100, 15, 29]

很容易制作3D图形

ax.plot_trisurf(x, y, z, cmap=cm.RdYlGn)

ax.bar3d(x, y, [0] * len(x), 100, 100, z, cmap=cm.RdYlGn)

但我正在寻找类似的东西 this

1 个答案:

答案 0 :(得分:1)

np.meshgrid返回两个2D数组的元组,您可以直接解压缩

X,Y = np.meshgrid(x,y)

然而,你不需要那些表演情节。您需要的代码和代码中缺少的是z值的二维数组。这将是提供给imshow的数组。

img = plt.imshow(Z)

如果您想使用meshgrid,则可以使用XY值,

plt.pcolormesh(X,Y,Z)

查看示例数据,您可以使用imshow:

x = [10, 10, 10, 20, 20, 20, 30, 30, 30]
y = [10, 20, 30, 10, 20, 30, 10, 20, 30]
z = [100, 54, 32, 67, 71, 88, 100, 15, 29]

import matplotlib.pyplot as plt
import numpy as np

z = np.array(z).reshape(3,3)

plt.imshow(z,extent=[5,35,5,35])

plt.show()

enter image description here