如何使用 matplotlib 在 3 维空间中绘制一条线

Posted

技术标签:

【中文标题】如何使用 matplotlib 在 3 维空间中绘制一条线【英文标题】:How to plot a line in 3 dimensional space with matplotlib 【发布时间】:2022-01-20 12:09:36 【问题描述】:

我有两个 3D 点,例如 a = (100, 100, 10) 和 b = (0, 100, 60),并且想通过这些点拟合一条线。 我知道,3D 线方程可以有不同的形状: 矢量形式:

(x,y,z)=(x0,y0,z0)+t(a,b,c)

参数形式:

x=x0+ta
y=y0+tb
z=z0+tc

但我在为数值函数获取正确形状的数据时遇到问题。

【问题讨论】:

您是在询问绘图或准备数据吗? 【参考方案1】:

下面的代码应该可以工作

import matplotlib.pyplot as plt

fig = plt.figure()
ax = plt.axes(projection ='3d')
 
# defining coordinates for the 2 points.
x = np.array([100, 0])
y = np.array([100, 100])
z = np.array([10, 60])
 
# plotting
ax.plot3D(x, y, z)
plt.show()

这里ax.plot3D() 绘制了一条将点(x[i], y[i], z[i]) 与直线连接起来的曲线。

【讨论】:

感谢您的回答!但这并不是我想要的。我想要一个线性函数,就像它在 2D 中一样:y = mx + b 但扩展到 3 维空间。而这个函数应该由我之前提到的两点来定义。所以,你的回答显示了我需要的部分功能。 两点 A、B 之间的线段由等式 P = A + t(B-A) 定义,其中 t 是从 0 到 1 的数字。在您的情况下,A=(100,100,10) 和 B=( 0,100,60)。如果 P=(x,y,z),我们得到:x=100-100t, y=100, z=10+50t。这是你要找的吗? 是的,这就是我要找的,谢谢!

以上是关于如何使用 matplotlib 在 3 维空间中绘制一条线的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5中的Matplotlib:如何去除边缘的小空间

python使用matplotlib绘制三维空间散点图

如何修复 Python 3 不能在一个图中处理多个图?

如何在ubuntu上使用pip为python3升级matplotlib?

绘图: matplotlib核心剖析

使用 Matplotlib 如何在最终图中突出显示一个点