我正在嘗試使用 matplotlib 繪制圓圈,我可以給出一個旋轉軸。我已經在堆疊溢位中找到了這篇文章,其中有人提供了一個用于旋轉與 z 軸相切的代碼。如何移動它以圍繞原點旋轉?目前,我的代碼如下所示:
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
def circ_3d(num_proj, start_rotation_axis, deg_list = [0,45,90]):
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
theta = np.linspace(0, 2 * np.pi, num_proj)
if start_rotation_axis == 'z':
x = np.cos(theta)
y = np.sin(theta)
for i in range(len(deg_list)):
degree = deg_list[i]
phi = np.deg2rad(degree)
ax.plot(x ,
y, x*np.sin(phi) )
else:
raise Exception("Enter a valid axis")
ax.plot((0,0),(0,0), (-radius,radius), '-k', label='z-axis', color = 'green')
ax.plot((-radius,radius),(0,0), (0,0), '-k', label='x-axis', color = 'cyan')
ax.plot((0,0),(-radius,radius), (0,0), '-k', label='y-axis', color = 'red')
ax.legend()
plt.show()
通過電話circ_3d(200,'z'),我得到了這張照片。有人可以幫助我了解轉變的來源以及如何避免轉變嗎?
我更新了代碼,現在得到以下內容。
所以剩下的問題是:給定 xy 平面中的一個圓(度數 = 0),如何將下一個圓傾斜 45 度(xy 平面到 z 軸),使得圓心仍然是 (0, 0,0) 并且它不會演化為橢圓。
提前致謝!
uj5u.com熱心網友回復:
最后,我設法自己找到了答案。對于任何對它感興趣的人,我將在此處發布:
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
def circ_3d(radius,num_proj, start_rotation_axis, cycle_list = [0]):
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
theta = np.linspace(0, 2 * np.pi, num_proj)
degree_step = 360/len(cycle_list)
if start_rotation_axis == 'x':
y = np.cos(theta)
z = np.sin(theta)
for i in range(len(cycle_list)):
degree = cycle_list[i]
phi = np.deg2rad(degree 90)
ax.plot(y*np.cos(phi),
y * np.sin(phi) , z , label = degree )
elif start_rotation_axis == 'y':
x = np.cos(theta)
z = np.sin(theta)
for i in range(len(cycle_list)):
degree = cycle_list[i]
phi = np.deg2rad(degree 90)
ax.plot(x * np.sin(phi), x * np.cos(phi)
, z, label = degree )
elif start_rotation_axis == 'z':
x = np.cos(theta)
y = np.sin(theta)
for i in range(len(cycle_list)):
degree = cycle_list[i]
phi = np.deg2rad(degree 90)
ax.plot(x,y * np.sin(phi) ,
y*np.cos(phi), label = degree )
else:
raise Exception("Enter a valid axis")
ax.plot((0,0),(0,0), (-radius,radius), '-k', label='z-axis', color = 'green')
ax.plot((-radius,radius),(0,0), (0,0), '-k', label='x-axis', color = 'cyan')
ax.plot((0,0),(-radius,radius), (0,0), '-k', label='y-axis', color = 'red')
ax.legend()
plt.show()
circ_3d(5,200,'x',[0,45,90])
通過運行這個腳本,你會得到這個plot。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/394400.html
標籤:Python matplotlib 数学
上一篇:將日期時間轉換為matplotlib日期時間xaxis的數字
下一篇:在plt中繪制日期時不均勻的網格
