问题描述
寻找一种使用mplot3d绘制函数z=f(x,y)
的方法,我发现 ,第一个示例看起来恰好。
综观的参数plot_surface(X, Y, Z)
三人都需要像大小的2维阵列。
我知道为什么Z
应该是二维的,但是为什么X
和Y
是二维的呢?
我以为我只是不明白什么是“表面图”,但是我发现所有非matplotlib引用都使用前一维参数作为一维数组。
二维X
和Y
使用?
1楼
我会尝试用语言解释。
plot_surface(X, Y, Z)
生成一个3-d图形。
现在,假设我们有一个10x10 = 100点的2-d(xy)网格,其中x从1到10,y从1到10。现在总共有100对(x,y),如(1, 1),(1,2),(1,3)...(1,10),(2,1),(2,2)....(2,10)....(10, 1),(10,2)...(10,10)。
现在,为每个(x,y)对定义一个对应的z值。
这意味着总共有100(x,y)对,总共有100个z值。
如果仅使用X=[1,2,3,4,5,6,7,8,9,10]
和Y=[1,2,3,4,5,6,7,8,9,10]
那么您基本上想为所有这100个点提供X坐标。
由于每个Y值共享相同的X坐标,因此这10个X值将重复10次(因为您有10个Y值)。
因此,您将创建一个100 X值的网格。
同样适用于Y,因此您拥有100个Y值的网格。
从网状网格生成这100对(x,y),并具有100个Z值,您只需使用plot_surface(X, Y, Z)
。