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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users