Нарисуйте более одной спирали с помощью 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() 

Почему я не могу сделать то же самое, когда есть три оси?

0 ответов

Другие вопросы по тегам