【问题标题】:Visualization of 3D vector using matplotlib使用 matplotlib 可视化 3D 矢量
【发布时间】:2021-11-04 19:38:21
【问题描述】:

我正在尝试使用 matplotlib 可视化两个 3D 列向量。 这是向量

v1 = (0, 2 , 1)
v2 = (2, 2, 0)

我从书中得到的上述向量的可视化。

[来源:线性代数导论,第五版(2016 年),Gilbert Strang 着]

我正在尝试将其可视化。这是代码和情节。


import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as plticker
from mpl_toolkits.mplot3d import Axes3D

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

soa = np.array([[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0], [0, 0, 4, 0.5, 0.7, 0]])

X, Y, Z, U, V, W = zip(*soa)
ax.quiver(X, Y, Z, U, V, W)
ax.set_xlim([-1, 5])
ax.set_ylim([-1, 5])
ax.set_zlim([-1, 8])
plt.show()

查看:

我不确定视图。这是正确的吗?如果我在这里错了需要帮助。

【问题讨论】:

    标签: python numpy matplotlib 3d data-visualization


    【解决方案1】:

    随行:

    soa = np.array([[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0],
                    [0, 0, 0, 0, 0, 0], [0, 0, 4, 0.5, 0.7, 0]])
    

    您正在定义 4 个 3D 向量,其中 3 个长度为 0,最后一个从 (0, 0, 4) 开始,并具有组件 (0.5, 0.7, 0)。所以代码与您报告的图像相符。
    如果你想绘制向量v1v2,都从原点开始,你应该使用:

    soa = np.array([[0, 0, 0, 0, 2, 1], [0, 0, 0, 2, 2, 0]])
    

    完整代码

    import numpy as np
    import matplotlib.pyplot as plt
    
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    
    soa = np.array([[0, 0, 0, 0, 2, 1], [0, 0, 0, 2, 2, 0]])
    
    X, Y, Z, U, V, W = zip(*soa)
    ax.quiver(X, Y, Z, U, V, W)
    ax.set_xlim([-1, 5])
    ax.set_ylim([-1, 5])
    ax.set_zlim([-1, 8])
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_zlabel('z')
    
    plt.show()
    

    【讨论】:

    • 谢谢。我错误地复制了不同的代码。但现在我知道答案了。
    • 您是否有任何想法仅通过代码设置此视图(无需手动旋转)?
    • 试试看this answer
    猜你喜欢
    • 2015-01-17
    • 2017-09-14
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多