2010-11-15 10 views
4

J'ai une fonction qui représentera graphiquement une sphère 3D avec matplotlib dans tkinter. Cependant, chaque fois que j'appelle la fonction la performance en orbite autour de la sphère tombe. De plus, le graphique ne se met à jour qu'après avoir essayé d'orbiter autour de la sphère.Essayer de mettre à jour les coordonnées d'un graphique 3D avec matplotlib

self.A est une variable qui ajuste la taille de la sphère.

Ma fonction:

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) 

Répondre

4

Vous ne devriez pas se régénérer à chaque fois que toutes les données, mais il suffit de modifier votre existant.

Edit: Il suffit de sortir de l'appel draw_fig le code de construction des axes

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) 
+0

Comment puis-je impliment cela? Self.A est un nombre entier qui peut être soit 10 ou 5. – rectangletangle

+0

Nice qui fonctionne pour moi! Merci pour l'aide. – rectangletangle

+0

+1 pour l'extraction du calcul –

Questions connexes