Good day!
Could You please tell me how can I get axises autoscaling in the animated plot example. I've take an example and have modifyed it slightly so the second line in plot gets out of bounding box during animation. What I need is autoscaling of axises during animation. Please point mee what I have to do.
Thanks a lot!
Hereafter a modifyed example:
···
--------------------------------------------------------------------
# For detailed comments on animation and the techniqes used here, see
# the wiki entry http://www.scipy.org/Cookbook/Matplotlib/Animations
import sys
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from PyQt4 import QtGui
ITERS = 100
import numpy as np
import time
class BlitQT(FigureCanvas):
def __init__(self):
FigureCanvas.__init__(self, Figure())
self.ax = self.figure.add_subplot(111)
self.ax.grid()
self.draw()
self.old_size = self.ax.bbox.width, self.ax.bbox.height
self.ax_background = self.copy_from_bbox(self.ax.bbox)
self.cnt = 0
self.x = np.arange(0,2*np.pi,0.01)
self.sin_line, = self.ax.plot(self.x, np.sin(self.x), animated=True)
self.cos_line, = self.ax.plot(self.x, np.cos(self.x), animated=True)
self.draw()
self.tstart = time.time()
self.startTimer(10)
def timerEvent(self, evt):
current_size = self.ax.bbox.width, self.ax.bbox.height
if self.old_size != current_size:
self.old_size = current_size
self.ax.clear()
self.ax.grid()
self.draw()
self.ax_background = self.copy_from_bbox(self.ax.bbox)
self.restore_region(self.ax_background, bbox=self.ax.bbox)
# update the data
self.sin_line.set_ydata(np.sin(self.x+self.cnt/10.0))
self.cos_line.set_ydata((self.x+self.cnt)/50.0)
# just draw the animated artist
self.ax.draw_artist(self.sin_line)
self.ax.draw_artist(self.cos_line)
# just redraw the axes rectangle
self.blit(self.ax.bbox)
if self.cnt == 0:
# TODO: this shouldn't be necessary, but if it is excluded the
# canvas outside the axes is not initially painted.
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_())