如何使用 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 维空间中绘制一条线的主要内容,如果未能解决你的问题,请参考以下文章