我正在尝试绘制螺旋(弹簧的形状)。我能够使用axes3D和matplotlib绘制单个螺旋。 以下是我的代码:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import rcParams
import matplotlib.pyplot as plt
import numpy as np
theta = np.linspace(-9 * np.pi, 9 * np.pi, 300)
radius = 5.0
x = radius*np.cos(theta)
x=[]
for i in theta:
if (i < 4.5* np.pi):
x.append(radius*np.cos(i))
else:
x.append((radius+2.0) * np.cos(i))
y=[]
for j in theta:
if (j < 4.5* np.pi):
y.append(radius*np.sin(j))
else:
y.append((radius+2.0) * np.sin(j))
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot(x, y, theta,
label = 'Parametric Curve', # label of the curve
color = 'DarkMagenta', # colour of the curve
linewidth = 1, # thickness of the line
linestyle = '-' # available styles - -- -. :
)
rcParams['legend.fontsize'] = 11 # legend font size
ax.legend() # adds the legend
ax.set_xlabel('X axis')
ax.set_xlim(-5, 5)
ax.set_ylabel('Y axis')
ax.set_ylim(-10, 10)
ax.set_zlabel('Z axis')
ax.set_zlim(-9*np.pi, 9*np.pi)
ax.set_title('3D line plot,\n parametric curve', va='bottom')
plt.show() # display the plot
我有两个问题:
1)我能够调整螺旋的半径,但无法调整音高。我应该做出哪些改变,这样我可以有19个圆形环,而不是9个。
2)在某个点(即螺旋的终点)之后,我想增加我的半径,并创建一个右手螺旋,一直到底部到我的第一个螺旋的起始点(我的第一个螺旋是左手螺旋)。我能够增加我的半径,但无法改变我的螺旋方向,也无法向下移动。
阅读matplotlib的文档后,我发现: 以下示例说明了使用数组在一个命令中绘制具有不同格式样式的多行。
import numpy as np
import matplotlib.pyplot as plt
# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)
# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()
当有三个轴时,为什么我不能这样做?