使用MatPlotLib绘制线框球体

时间:2016-06-19 23:43:42

标签: python matplotlib

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

制作以下图:

enter image description here

我现在想要做的是以下两件事:

  1. 停止对每个曲面进行着色,使所有曲面都是相同的颜色(白色)。取而代之的是,在每个表面之间画一条线(黑色)。通过这种方式,球体看起来应该像线框,而不是阴影的实体对象。我在shade=False中尝试了ax.plot_surface(...),这让我在停止阴影的过程中得到了一半 - 但所有曲面最终都是相同的颜色,所以没有线框,你无法区分每个曲面

  2. 从绘图中移除轴,这样球体就可以单独使用了。我在frameon=False中尝试了ax.plot_surface(...),但这给了我错误:AttributeError: Unknown property frameon

  3. 任何帮助?

    谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 设置shade=False,但也将linewidth设置为0以外的任何值(例如linewidth=1)。 (或者,使用ax.plot_wireframe()代替ax.plot_surface()。)

  2. ax.set_axis_off()关闭了轴。