为了账号安全,请及时绑定邮箱和手机立即绑定

如何用 matplotlib 绘制以线性代数形式给出的线?

如何用 matplotlib 绘制以线性代数形式给出的线?

偶然的你 2023-12-12 20:26:36
这是一个微不足道的问题,但我一次又一次地遇到它,我确信有一个优雅的解决方案,我想使用它。我用 numpy 做数学,想绘制线性代数计算结果的线。这些行的形式为 因此,我想将查找线条起始端点的工作“外包”给一个聪明的 python 代码片段,以便将生成的线条绘制到我的 3D 绘图中,从而尊重绘图的现有尺寸。例如,如果我从 x = -2 到 2 和 z = -3 到 3 绘制一条 3D 平行线,并且我想画一条线 ,它会发现它需要从 (-2,1,-2) 开始并结束于 (2,1,2)。这怎么可能行得通呢?
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

首先,定义projection参数很重要。其次,您需要使用不同形状的P, v,z以获得与方法坐标相对应的X, Y,参数:Zplot


import matplotlib.pyplot as plt

import numpy as np


fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')


P = np.array([1,1,1]).reshape(-1,1)

v = np.array([1,0,1]).reshape(-1,1)

z = np.linspace(-3,3,100)

X, Y, Z = P + v*z


ax.plot(X, Y, Z)

plt.show()

根据评论

reshape(-1, 1)添加了广播所需的额外维度。它也是 的替代品reshape(3, 1)。简单情况 ( arr1 = varr2 = np.linspace(-3,3,11)) 可以像这样可视化:

https://img1.sycdn.imooc.com/657851d10001b57010810275.jpg

曲线的终点g = (1, 1, 1) + z * (1, 0, 1)位于 的区间边界处z,即:

g1 = (1, 1, 1) + (-3) * (1, 0, 1) = (-2, 1, -2)
g2 = (1, 1, 1) + 3 * (1, 0, 1) = (4, 1, 4)

请注意,z = 1需要获得终点 =(2,1,2)


查看完整回答
反对 回复 2023-12-12
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信