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

2 つの質問があります。

1) らせんの半径は調整できましたが、ピッチ数を調整できませんでした。円環を 9 個ではなく 19 個にするには、どのような変更を加える必要がありますか?

2)特定のポイント(つまり、らせんの終点)の後、半径を増やして、最初のらせんの開始点までずっと下まで行く右巻きのらせんを作成したい(最初のらせんは左巻きだったヘリックス)。半径を大きくすることはできましたが、らせんの方向を変更することはできず、下に移動することもできませんでした。

matplotlib のドキュメントを読んだ後、次のことがわかり ました。以下の例は、配列を使用して 1 つのコマンドで異なる形式スタイルの複数の行をプロットする方法を示しています。

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() 

軸が 3 つあるのに同じことができないのはなぜですか?

4

0 に答える 0