【问题标题】:How to obtain 2D projected version of a 3D plot in Matplotlib?如何在 Matplotlib 中获取 3D 绘图的 2D 投影版本?
【发布时间】:2021-02-04 18:20:15
【问题描述】:

假设你已经用 Python 绘制了一个 3D 图形。

import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(projection="3d")
ax.plot3D([0, 0, 0, 0], [0, 1, 1, 0], [0, 0, 1, 0])
plt.show()

您可以用鼠标将图片旋转到您喜欢的位置。

现在如何获得包含 3D 对象的投影版本的 2D 图?

在这种情况下,这将是一个由三个 (x, y) 点定义的三角形。删除 3D 和 2D 图中的轴和网格后,您会看到两个完全相同的图形(三角形)。

我认为手动calculate the 2D projection 是可能的,但我想知道是否有一个内置函数可以为你做到这一点。

【问题讨论】:

    标签: python matplotlib plot 3d projection


    【解决方案1】:

    一种方法是使用ax.view_init(elev = elevation, azim=angle) 获取视角。

    然后用这些角度得到视图坐标系,见以下链接:

    How to get 3D coordinates from distance, azimuth and elevation

    https://www.mathworks.com/help/phased/ug/spherical-coordinates.html#bs9g0ok

    一旦你有了那个坐标系,你就需要 3d 系统来投影和移除,例如z轴稍后,例如

    x:向上屏幕 y:左屏幕 z:屏幕外(朝向你)

    (右手系统,右手法则)

    然后你可以使用一些简单的向量计算来投影你的数据, 考虑视角,并将其绘制在单独的图中。

    更多信息可以在这里找到(或搜索projection 3d on coordinate system):

    https://math.stackexchange.com/questions/2305792/3d-projection-on-a-2d-plane-weak-maths-ressources

    https://math.stackexchange.com/questions/236540/2d-coordinates-of-projection-of-3d-vector-onto-2d-plane

    https://math.stackexchange.com/questions/3763054/projecting-3d-points-onto-2d-coordinate-system-of-a-plane

    https://math.stackexchange.com/questions/1814927/3d-perspective-projection

    【讨论】:

      猜你喜欢
      • 2017-11-02
      • 1970-01-01
      • 2017-01-12
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多