【发布时间】:2018-01-01 14:48:44
【问题描述】:
我需要在一张图片中绘制许多大大小小的球体。以下代码有效,但运行时间非常长。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect('equal')
u = numpy.linspace(0, 2*numpy.pi, 100)
v = numpy.linspace(0, numpy.pi, 100)
x = numpy.outer(numpy.cos(u), numpy.sin(v))
y = numpy.outer(numpy.sin(u), numpy.sin(v))
z = numpy.outer(numpy.ones(numpy.size(u)), numpy.cos(v))
for k in range(200):
c = numpy.random.rand(3)
r = numpy.random.rand(1)
ax.plot_surface(
r*x + c[0], r*y + c[1], r*z + c[2],
color='#1f77b4',
alpha=0.5,
linewidth=0
)
plt.show()
我正在寻找更有效的解决方案。可能matplotlib中有我没找到的原生球体艺术家?
【问题讨论】:
标签: python performance matplotlib 3d