我目前能够根据一些数据绘制pcolor样式图。数据由每个数据点(X,Y,Z)的三个坐标组成。

我的数据的结构如下:

X: 1D array
   shape = [500,0]

Y: 1D array
   shape = [700,0]

Z: 2D array
   shape = [500, 700]


因此,我的Z数组的行对应于X坐标,而我的列对应于Y坐标。

然后将数据绘制到pcolor图上,我只是做了:

plt.pcolormesh(X,Y,Z.T)


因为pcolormesh期望如何接收输入数据,所以需要转置。

现在,我想使用plot_surface绘制与表面相同的数据。但是,在以必要方式构造数据时遇到了问题。谁能提供任何指导?

最佳答案

plot_surface期望所有输入数组均为2D。

您可以使用numpy.meshgrid生成网格点

In [78]: X = np.arange(500)
In [79]: Y = np.arange(700)

In [83]: xx, yy = np.meshgrid(X, Y)

In [84]: xx.shape
Out[84]: (700, 500)

In [85]: yy.shape
Out[85]: (700, 500)


然后,您可以拨打plot_surface(xx, yy, Z.T)

10-06 10:28