Python-matplotlib中的曲面图

发布于 2021-02-02 23:14:09

我有一个3元组的列表,表示3D空间中的一组点。我想绘制一个覆盖所有这些点的表面。mplot3d软件包中的plot_surface函数需要X,Y和Z作为二维数组作为参数。plot_surface是绘制表面的正确函数,如何将数据转换为所需格式?

data = [(x1,y1,z1),(x2,y2,z2),.....,(xn,yn,zn)]
关注者
0
被浏览
61
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    对于曲面,它与三元组列表略有不同,您应该为2d数组中的域传递网格。

    如果您只拥有3d点列表而不是某些函数f(x, y) -> z,那么您将遇到问题,因为有多种方法可以将3d点云划分为表面。

    这是一个光滑的表面示例:

    import numpy as np
    from mpl_toolkits.mplot3d import Axes3D  
    # Axes3D import has side effects, it enables using projection='3d' in add_subplot
    import matplotlib.pyplot as plt
    import random
    
    def fun(x, y):
        return x**2 + y
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    x = y = np.arange(-3.0, 3.0, 0.05)
    X, Y = np.meshgrid(x, y)
    zs = np.array(fun(np.ravel(X), np.ravel(Y)))
    Z = zs.reshape(X.shape)
    
    ax.plot_surface(X, Y, Z)
    
    ax.set_xlabel('X Label')
    ax.set_ylabel('Y Label')
    ax.set_zlabel('Z Label')
    
    plt.show()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看