Although the curves now are fitting in the box, the axes data does not 
updated and freezes at some initial values. I'm also reworked example in 
order to use two Y axises one to the left and one at the right. And the 
second plot attached to the right axis is not autoscaled as the first 
does. Those the two things stops me now.
Any suggestions is highly appreciated!

# -*- coding: utf-8 -*-
"""
Created on Fri Jul 23 10:53:59 2010

@author: ali
"""

import sys

from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as 
FigureCanvas

from PyQt4 import QtGui

import numpy as np
import time

ITERS = 1000

class BlitQT(FigureCanvas):
     def __init__(self):
         FigureCanvas.__init__(self, Figure())
         self.figure.subplots_adjust(right=0.75)

         self.ax1 = self.figure.add_subplot(111)
         self.ax1.set_ylabel("Func1")
         self.ax2 = self.ax1.twinx()
         self.ax2.set_ylabel("Func2")

         self.ax1.grid()
         self.draw()

         self.ax1_background = self.copy_from_bbox(self.ax1.bbox)
         self.ax2_background = self.copy_from_bbox(self.ax2.bbox)
         self.cnt = 0

         self.x = np.arange(0,2*np.pi,0.01)
         self.line1, = self.ax1.plot(self.x, np.sin(self.x), 'b', 
animated=True)
         self.line2, = self.ax2.plot(self.x, np.cos(self.x), 'r', 
animated=True)

         self.tstart = time.time()
         self.startTimer(10)


     def timerEvent(self, evt):
         y1 = self.x * np.sin(self.x+self.cnt/10.0)
         y2 = np.cos(self.x+self.cnt/10.0) / self.x
         self.ax1.set_ylim(y1.min(), y1.max())
         self.ax2.set_ylim(y2.min(), y2.max())
         self.restore_region(self.ax1_background, bbox=self.ax1.bbox)
#        self.restore_region(self.ax2_background, bbox=self.ax2.bbox)

         # update the data
         self.line1.set_ydata(y1)
         self.line2.set_ydata(y2)
         # just draw the animated artist
         self.ax1.draw_artist(self.line1)
         self.ax2.draw_artist(self.line2)
         # just redraw the axes rectangle
#        self.blit(self.ax1.bbox)
         self.blit(self.ax2.bbox)

         if self.cnt == 0:
             self.draw()
         if self.cnt==ITERS:
             # print the timing info and quit
             print 'FPS:' , ITERS/(time.time()-self.tstart)
             sys.exit()
         else:
             self.cnt += 1

app = QtGui.QApplication(sys.argv)
widget = BlitQT()
widget.show()

sys.exit(app.exec_())


------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to