猿问

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

这是一个微不足道的问题,但我一次又一次地遇到它,我确信有一个优雅的解决方案,我想使用它。

我用 numpy 做数学,想绘制线性代数计算结果的线。这些行的形式为 

因此,我想将查找线条起始端点的工作“外包”给一个聪明的 python 代码片段,以便将生成的线条绘制到我的 3D 绘图中,从而尊重绘图的现有尺寸。例如,如果我从 x = -2 到 2 和 z = -3 到 3 绘制一条 3D 平行线,并且我想画一条线 https://img1.sycdn.imooc.com/657851ba000128b901740078.jpg,它会发现它需要从 (-2,1,-2) 开始并结束于 (2,1,2)。

这怎么可能行得通呢?


偶然的你
浏览 103回答 1
1回答

斯蒂芬大帝

首先,定义projection参数很重要。其次,您需要使用不同形状的P, v,z以获得与方法坐标相对应的X, Y,参数:Zplotimport matplotlib.pyplot as pltimport numpy as npfig = 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*zax.plot(X, Y, Z)plt.show()根据评论reshape(-1, 1)添加了广播所需的额外维度。它也是 的替代品reshape(3, 1)。简单情况 ( arr1 = v; arr2 = np.linspace(-3,3,11)) 可以像这样可视化:曲线的终点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)
随时随地看视频慕课网APP

相关分类

Python
我要回答