【问题标题】:Python - have a pcolor plot; now want a surfacePython - 有一个 pcolor 图;现在想要一个表面
【发布时间】:2020-07-24 16:56:04
【问题描述】:

我目前能够根据一些数据绘制 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 绘制与表面相同的数据。但是,我在以必要的方式构建数据时遇到了问题。任何人都可以提供任何指导吗?

【问题讨论】:

    标签: python numpy matplotlib


    【解决方案1】:

    plot_surface 期望所有输入数组都是二维的。

    您可以使用 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)

    【讨论】:

    • 您甚至可以通过使用 mgrid 获得更少的行数:yy, xx = np.mgrid[0:700, 0:500]
    • @tiago 很好,我只知道meshgrid(已经来自旧的 MATLAB 时代)
    猜你喜欢
    • 2013-01-03
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多