0

我正在尝试绘制螺旋线(弹簧的形状)。我能够使用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() 

当有三个轴时,为什么我不能做同样的事情?

4

0 回答 0