matplotlib 带有二维阵列的三维打印

py49o6xq  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(120)

我有两个1D数组,其中x和y的值,还有一个2D数组,每个点的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')
bxpogfeg

bxpogfeg1#

您忘记调用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()

在这里,我使用了一个简单的函数,因为您没有提供一个完整的工作示例。

相关问题