尝试用matplotlib更新三维图形坐标

2024-04-25 17:56:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,可以在tkinter中用matplotlib绘制一个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)

Tags: 函数selfnumpymatplotlibtkinterpifig绘制
1条回答
网友
1楼 · 发布于 2024-04-25 17:56:34

您不应该每次都重新生成所有数据,而只需修改现有的数据。在

编辑:只需从调用图中移出轴构建代码

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)

相关问题 更多 >