1
Matplotlibを使って表面に点を持つ球を描きたいと思います。これらの点は、球体の一方の側から他方の側に螺旋状に螺旋状に接続される。 これを少し明確にするために、プロットは多かれ少なかれ次のようになります: これを行う方法について誰にもヒントはありますか?Matplotlibで球面上に螺旋で結ばれた描画点
Matplotlibを使って表面に点を持つ球を描きたいと思います。これらの点は、球体の一方の側から他方の側に螺旋状に螺旋状に接続される。 これを少し明確にするために、プロットは多かれ少なかれ次のようになります: これを行う方法について誰にもヒントはありますか?Matplotlibで球面上に螺旋で結ばれた描画点
スパイラル、数式またはポイントのセットのパラメータを知る必要があります。
私はあなたの開始のための球上のマーカーでラインをプロットするためのコードをポストしかし:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_aspect('equal')
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 1 * np.outer(np.cos(u), np.sin(v))
y = 1 * np.outer(np.sin(u), np.sin(v))
z = 1 * np.outer(np.ones(np.size(u)), np.cos(v))
elev = 10.
rot = 80./180. * np.pi
ax.plot_surface(x, y, z, rstride=1, cstride=1, color='y', linewidth=0, alpha=0.5)
# plot lines in spherical coordinates system
a = np.array([-np.sin(elev/180 * np.pi), 0, np.cos(elev/180 * np.pi)])
b = np.array([0, 1, 0])
b = b * np.cos(rot) + np.cross(a, b) * np.sin(rot) + a * np.dot(a, b) * (1 - np.cos(rot))
ax.plot(np.sin(u),np.cos(u),0,color='r', linestyle = '-', marker='o', linewidth=2.5)
ax.view_init(elev = elev, azim = 0)
plt.show()
'markevery' kwargがここで助けてくれるかもしれません。 – tacaswell
私はそれを理解し、matplotlibのは、真の3Dプロットを持っていないので、それはかもしれません球の内部に落ちた、または球によって妨げられている「ドット」の部分を自動的に取り除くことができないようにしてください。これを行うための独自のコードを書くのではなく、ネイティブに3Dであるmayaviを試すことができます。 –