【问题标题】:How do you tell when the points on a 3D plot lie on a plane or on a curve?如何判断 3D 图上的点何时位于平面上或曲线上?
【发布时间】:2020-10-25 14:09:13
【问题描述】:

我有一个使用 matploblib Axes 3D 生成的一些数据的 3D 散点图。我需要决定它是在平面上还是在曲线上。我试图了解表明平面或曲线的视觉差异。我的猜测是,如果沿大范围的 z 值存在点,那么它就位于曲线上,因为如果它位于平面上,则这意味着这些点仅分布在平面上。即使我的猜测是正确的,我也只是排除了唯一的另一种可能性,那么我如何具体判断数据是否位于曲线上?

【问题讨论】:

    标签: python r geometry data-science


    【解决方案1】:

    如果平面倾斜,您还会发现范围很广的 z 值。

    假设您的 3D points 在 nx3 数组中,您可以使用以下方法计算适合它们的平面:

    centroid = np.mean(points, axis=0)
    _, eigenvalues, eigenvectors = np.linalg.svd(points - centroid, full_matrices=False)
    normal = eigenvectors[2]
    dispersion = eigenvalues[2]
    

    最接近散点的平面由一个点 (centroid) 及其normal 向量定义。

    然后,根据法线轴上的dispersion 值,您可以决定它是足够低(点位于平面上)还是太高(它们不在平面上)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2010-11-02
      相关资源
      最近更新 更多