Нарисуйте более одной спирали с помощью matplotlib
Я пытаюсь нарисовать спираль (форму весны). Я смог нарисовать одну спираль, используя 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()
Почему я не могу сделать то же самое, когда есть три оси?