使用 matplotlib 可视化 3D 矢量
Visualization of 3D vector using matplotlib
我正在尝试使用 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()
查看:
我不确定这个观点。这是对的吗?如果我在这里错了需要帮助。
连线:
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)
。所以代码符合你报告的图像。
如果你想绘制向量 v1
和 v2
,都从原点开始,你应该使用:
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()
我正在尝试使用 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()
查看:
我不确定这个观点。这是对的吗?如果我在这里错了需要帮助。
连线:
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)
。所以代码符合你报告的图像。
如果你想绘制向量 v1
和 v2
,都从原点开始,你应该使用:
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()