code: def on_mouse_wheel(self, event):
      prof = Profiler()  # noqa
      if not event.modifiers:
          dx = np.sign(event.delta[1]) * 0.05
          x0, y0 = self._normalize(event.pos)
          pan_x, pan_y = self._pz.pan
          zoom_x, zoom_y = self._pz.zoom
          zoom_x_new, zoom_y_new = (
              zoom_x * math.exp(2.5 * dx),
              zoom_y * math.exp(2.5 * dx),
          )
          self._pz.zoom = (zoom_x_new, zoom_y_new)
          self._pz.pan = (
              pan_x - x0 * (1.0 / zoom_x - 1.0 / zoom_x_new),
              pan_y + y0 * (1.0 / zoom_y - 1.0 / zoom_y_new),
          )
          self.update()
  
imports: import numpy
  import math
  from vispy import gloo, app, scene
  from vispy.visuals import Visual
  from vispy.visuals.shaders import Function, Variable
  from vispy.visuals.transforms import TransformSystem, BaseTransform
  from vispy.util.profiler import Profiler
label_desc: Use image node_id 6 for calling the PanZoomCanvas obj's underlying member method code with example usage: obj.on_mouse_wheel(event) without return types