這是一個微不足道的問題,但我一次又一次地遇到它,我確信有一個優雅的解決方案,我想使用它。我用 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 = 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)
添加回答
舉報
0/150
提交
取消