You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用matplotlib可视化3D列向量,代码生成的绘图结果是否正确?

问题描述

我正尝试使用matplotlib可视化两个3D列向量,对应向量如下:

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

参考书籍《Introduction to Linear Algebra, Fifth Edition (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()

生成的实际绘图效果:
实际生成绘图效果
我不确定当前生成的可视化结果是否正确,若存在错误麻烦帮忙指正。


错误修正与解答

你当前的代码存在两处核心问题,输出结果不符合需求:

  • soa数组的定义完全错误:该数组每行的格式应为[向量起点x, 向量起点y, 向量起点z, 向量x分量, 向量y分量, 向量z分量],你当前的数组没有填入v1、v2的对应分量,反而填充了大量无效值和无关数值。
  • 3D模式下quiver函数默认箭头比例失调,需要额外添加参数调整显示效果,同时保证向量长度和实际数值匹配。

修正后的可运行代码如下:

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

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

# 按格式填入两个从原点出发的向量参数
soa = np.array([
    [0, 0, 0, 0, 2, 1],  # 对应v1
    [0, 0, 0, 2, 2, 0]   # 对应v2
])

X, Y, Z, U, V, W = zip(*soa)
# 调整箭头比例、关闭自动归一化,添加区分颜色方便识别
ax.quiver(X, Y, Z, U, V, W, arrow_length_ratio=0.1, normalize=False, color=['red', 'blue'])
# 调整坐标轴范围适配向量实际长度
ax.set_xlim([-1, 3])
ax.set_ylim([-1, 3])
ax.set_zlim([-1, 2])
# 添加坐标轴标注提升可读性
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')
plt.show()

运行上述代码即可得到和参考教材一致的可视化效果,红色向量对应v1,蓝色向量对应v2。

内容的提问来源于stack exchange,提问作者Arijit Panda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:00:05