尝试用matplotlib更新3D图形的坐标
我有一个函数,可以用matplotlib在tkinter中绘制一个3D球体。不过,每次我调用这个函数时,当我想要旋转球体时,性能都会下降。而且,图形只有在我尝试旋转球体后才会更新。
self.A 是一个变量,用来调整球体的大小。
我的函数:
def draw_fig(self):
self.ax = Axes3D(self.fig)
u = numpy.linspace(0, 2 * numpy.pi, 100)
v = numpy.linspace(0, numpy.pi, 100)
x = self.A * numpy.outer(numpy.cos(u), numpy.sin(v))
y = self.A * numpy.outer(numpy.sin(u), numpy.sin(v))
z = self.A * numpy.outer(numpy.ones(numpy.size(u)), numpy.cos(v))
t = self.ax.plot_surface(x, y, z, rstride=4, cstride=4,color='lightblue',linewidth=0)
1 个回答
4
你不应该每次都重新生成所有的数据,而是只需要修改你已有的数据。
补充说明:只需把绘图函数中的坐标轴构建代码移出去就可以了。
def __init__...
u = numpy.linspace(0, 2 * numpy.pi, 100)
v = numpy.linspace(0, numpy.pi, 100)
self.x = A * numpy.outer(numpy.cos(u), numpy.sin(v))
self.y = A * numpy.outer(numpy.sin(u), numpy.sin(v))
self.z = A * numpy.outer(numpy.ones(numpy.size(u)), numpy.cos(v))
self.ax = Axes3D(self.fig)
def draw_fig(self):
t = self.ax.plot_surface(self.x, self.y, self.z, rstride=4, cstride=4,color='lightblue',linewidth=0)