【问题标题】:3D Matplotlib plotting inaccuracy for very small distances非常小的距离的 3D Matplotlib 绘图不准确
【发布时间】:2021-06-10 05:01:06
【问题描述】:

这是在 matplotlib 3D 绘图中发现的非常小的距离不准确(如果我做错了什么,请告诉我)。

print("[TEST] Plotted vector from "+str(M_pos[0])+" "+str(M_pos[1])+" "+str(M_pos[2])+" TO "+str(M_pos[0]+i.E[0])+" "+str(M_pos[1]+i.E[1])+" "+str(M_pos[2]+i.E[2]))
ax.quiver(M_pos[0], M_pos[1], M_pos[2], (M_pos[0]+i.E[0]), (M_pos[1]+i.E[1]), (M_pos[2]+i.E[2]))

上面那两行(在一个更大的项目中,但这两行是最重要的,因为它们表明打印和绘制的六个变量是相同的,创建以下输出:

See image here

即使向量清楚地从 1、1、1 绘制到 0.98、0.98、0.98,向量似乎背对 3D 图中的原点。这是一个众所周知的错误,还是我的代码行因任何原因而关闭?

【问题讨论】:

  • Quiver 需要 x,y,z,u,v,w 而不是 x,y,z,x1,y1,z1

标签: python matplotlib jupyter-lab


【解决方案1】:

想通了!乔迪也打败了我。

我的代码如下:

ax.quiver(M_pos[0], M_pos[1], M_pos[2], (M_pos[0]+i.E[0]), (M_pos[1]+i.E[1]), (M_pos[2]+i.E[2]))

但它应该已经阅读

ax.quiver(M_pos[0], M_pos[1], M_pos[2], (i.E[0]), (i.E[1]), (i.E[2]))

因为我假设箭筒从点 x,y,z 指向点 x2,y2,z2 - 都相对于原点。然而,最后三个值实际上是相对于点 x,y,z 确定的。因此,要将给定向量 x,y,z 绘制到给定点 x2,y2,z2,实际上会将 x、y、z 绘制到点 x2-x、y2-y、z2-z。这更有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2017-04-12
    • 1970-01-01
    • 2021-08-10
    相关资源
    最近更新 更多