【发布时间】:2016-06-19 23:43:42
【问题描述】:
使用 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()
产生以下情节:
我现在想做的,是以下两件事:
停止对每个表面进行着色,使所有表面的颜色相同(白色)。取而代之的是,在每个表面之间画一条线(黑色)。通过这种方式,球体应该看起来像一个线框,而不是一个带阴影的实体对象。我在
ax.plot_surface(...)中尝试过shade=False,这让我停止了阴影——但所有表面最终都是相同的颜色,所以没有线框,你无法区分每个表面。从图中移除坐标轴,使球体独立存在。我在
ax.plot_surface(...)中尝试过frameon=False,但这给了我错误:AttributeError: Unknown property frameon。
有什么帮助吗?
谢谢!
【问题讨论】:
标签: python matplotlib