3D绘图与2D数组python matplotlib

Num*_*let 5 python 3d plot matplotlib

我有2个1D数组,其值为x和y,还有一个二维数组,每个点的值为z,其中列对应x值,行对应y值.有没有办法用这个数据获得plot_surface?当我尝试这样做时,它不会让我失去任何情节.这是代码:( calculate_R是我为程序创建的函数)

x=np.arange(0,10,1)
y=np.arange(0,1,0.2)
lx= len(x)
ly=len(y)

z=np.zeros((lx,ly))

for i in range(lx):
    for j in range(ly):
        z[i,j]=calculate_R(y[j],x[i])

fig = plt.figure()
ax = Axes3D(fig)
x, y = np.meshgrid(x, y)
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='hot')
Run Code Online (Sandbox Code Playgroud)

Dav*_*ker 5

你忘了打电话plt.show()来显示你的情节.

请注意,您可以利用numpy矢量化来加速计算z:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D

x = np.arange(0,10,1)
y = np.arange(0,1,0.2)

xs, ys = np.meshgrid(x, y)
# z = calculate_R(xs, ys)
zs = xs**2 + ys**2

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(xs, ys, zs, rstride=1, cstride=1, cmap='hot')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在这里,我使用了一个简单的函数,因为你没有提供一个完整的例子.

  • 是否可以将 zs 替换为 `np.array`(矩阵 `mat`)和 `x`、`y` 替换为 `np.arange(0, xsize, 1)`、`np.arange(0, ysize, 1)` where `xsize, ysize = mat.shape`,以获得矩阵的 3D 绘图? (2认同)
  • 确实:见[这个问题](http://stackoverflow.com/questions/43275798/how-to-plot-two-3d-plots-of-matrices-on-the-same-figure-with-same-scale- in-pytho/43275998?noredirect=1#comment73620775_43275998) (2认同)