尝试使用matplotlib更新3D图的坐标

4

我有一个函数,使用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
您不应每次都重新生成所有数据,而只需修改现有数据。
编辑:只需将绘制图形的代码移出调用draw_fig的轴构建代码。
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)

我该如何实现这个?同时,self.A是一个整数,可以是10或5。 - rectangletangle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接