【发布时间】:2016-09-27 23:53:11
【问题描述】:
【问题讨论】:
-
据我了解,matplotlib 没有真正的 3D 绘图,因此它可能无法自动删除落在球体内或被球体阻挡的“点”部分。您可以尝试使用原生 3D 的 mayavi,而不是编写自己的代码来执行此操作。
标签: python matplotlib
【问题讨论】:
标签: python 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()
【讨论】: