Попытка обновить координаты 3D-графиков с помощью matplotlib - PullRequest
4 голосов
/ 15 ноября 2010

У меня есть функция, которая будет строить трехмерную сферу с помощью matplotlib в tkinter. Однако, каждый раз, когда я вызываю функцию, производительность при вращении сферы падает. Кроме того, график обновляется только после того, как я пытаюсь вращаться вокруг сферы.

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 голосов
/ 15 ноября 2010

Не следует каждый раз восстанавливать все данные, а просто изменять существующую.

Редактировать: просто выйдите из вызывающего 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...