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繪圖,所以它可能無法自動移除落入球體內或被其阻擋的「點」部分。而不是編寫自己的代碼來做到這一點,你可以嘗試mayavi,這是本地3D。 –