【问题标题】:3D plot with an 2D array python matplotlib带有 2D 数组的 3D 绘图 python matplotlib
【发布时间】:2014-05-21 02:09:21
【问题描述】:

我有 2 个具有 x 和 y 值的 1D 数组,还有一个 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')

【问题讨论】:

    标签: python matplotlib 3d plot


    【解决方案1】:

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

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

    【讨论】:

    • 是否可以用np.array(矩阵mat)和xy 替换zs 为np.arange(0, xsize, 1)np.arange(0, ysize, 1) 其中xsize, ysize = mat.shape,以便获得矩阵的 3D 图?
    • 是的,应该可以的。
    • 确实:见this question
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2013-05-04
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    相关资源
    最近更新 更多