pyqt5でグラフ上でマウスホイールを回したときにグラフがズームイン、ズームアウトされるようにしたいです。以下は試しに書いてみたコードです。

import sys
from PyQt5 import QtGui,QtCore, QtWidgets,QtMultimedia, QtMultimediaWidgets
from PyQt5.QtWidgets import QDialog, QApplication, QVBoxLayout
from PyQt5.QtCore import Qt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5 import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
import matplotlib.pyplot as plt

import numpy as np


class MyCanvas(FigureCanvas):
    def __init__(self, parent=None):
        width=5
        height=4
        dpi=100
        self.x_ini=0
        self.x_fin=2*np.pi

        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)

        FigureCanvas.__init__(self, fig)
        self.setParent(parent)

        self.plot_figure3(self.x_ini,self.x_fin)


    def wheelEvent(self,event):
        self.set_range()
        self.plot_figure3(self.x_ini,self.x_fin)


    def set_range(self):
        diff=self.x_fin-self.x_ini
        center=(self.x_ini+self.x_fin)/2
        self.x_ini=center-diff*1.1
        self.x_fin=center+diff*1.1



class MyStaticMplCanvas(MyCanvas):
    def __init__(self, parent=None):
        super(MyStaticMplCanvas,self).__init__(parent)
        self.setFocusPolicy(Qt.StrongFocus)
        self.setAcceptDrops(True)


    def plot_figure3(self,x_ini,x_fin):
        #x=np.arange(0,2*np.pi,0.1)
        x=np.linspace(x_ini,x_fin,1000)
        y=np.cos(x)
        self.axes.clear()
        self.axes.plot(x,y,"-")
        self.axes.set_xlabel("x")
        self.axes.set_ylabel("y")    
        self.axes.set_xlim(x_ini,x_fin)
        self.draw()

class Main(QDialog):
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)

        #canvas = MyCanvas(self)
        canvas = MyStaticMplCanvas(self)

        layout = QVBoxLayout()
        layout.addWidget(canvas)

        self.setLayout(layout)

        self.setWindowTitle('plot')
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = Main()

    app.exec_()

これを実行すると次のようなGUIが作成されます。
画像
ここで、グラフ上でマウスホイールを回すとグラフのx方向の表示範囲が大きくなります。しかし、今のままでは描写範囲が大きくなるばかりで小さくなることはありません。マウスホイールの回転方向を判別できれば解決できそうなのですが、その方法が分かりません。どなたかご教授お願いします。