使用MatPlotLib,我想通过绘制一组球面坐标来绘制球体。我已经到了一半,但我无法完全达到我想要的目的。
到目前为止,以下代码:
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as axes3d
theta, phi = np.linspace(0, 2 * np.pi, 13), np.linspace(0, np.pi, 7)
THETA, PHI = np.meshgrid(theta, phi)
R = 1.0
X = R * np.sin(PHI) * np.cos(THETA)
Y = R * np.sin(PHI) * np.sin(THETA)
Z = R * np.cos(PHI)
fig = plt.figure()
ax = fig.add_subplot(1,1,1, projection='3d')
plot = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, linewidth=0, color='white', antialiased=False, alpha=1, frameon=False)
plt.show()
制作以下图:
我现在想要做的是以下两件事:
停止对每个曲面进行着色,使所有曲面都是相同的颜色(白色)。取而代之的是,在每个表面之间画一条线(黑色)。通过这种方式,球体看起来应该像线框,而不是阴影的实体对象。我在shade=False
中尝试了ax.plot_surface(...)
,这让我在停止阴影的过程中得到了一半 - 但所有曲面最终都是相同的颜色,所以没有线框,你无法区分每个曲面
从绘图中移除轴,这样球体就可以单独使用了。我在frameon=False
中尝试了ax.plot_surface(...)
,但这给了我错误:AttributeError: Unknown property frameon
。
任何帮助?
谢谢!
答案 0 :(得分:1)
设置shade=False
,但也将linewidth
设置为0以外的任何值(例如linewidth=1
)。 (或者,使用ax.plot_wireframe()
代替ax.plot_surface()
。)
ax.set_axis_off()
关闭了轴。