class_docstr: Camera implementing 2D pan/zoom mouse interaction.
  
  For this camera, the ``scale_factor`` indicates the zoom level, and
  the ``center`` indicates the center position of the view.
  
  By default, this camera inverts the y axis of the scene. This usually
  results in the scene +y axis pointing upward because widgets (including
  ViewBox) have their +y axis pointing downward.
  
  Parameters
  ----------
  rect : Rect
      A Rect object or 4-element tuple that specifies the rectangular
      area to show.
  aspect : float | None
      The aspect ratio (i.e. scaling) between x and y dimension of
      the scene. E.g. to show a square image as square, the aspect
      should be 1. If None (default) the x and y dimensions are scaled
      independently.
  **kwargs : dict
      Keyword arguments to pass to `BaseCamera`.
  
  Notes
  -----
  Interaction:
  
      * LMB: pan the view
      * RMB or scroll: zooms the view
class_docstr_tok: ["Camera","implementing","2D","pan\/zoom","mouse","interaction",".","For","this","camera",",","the","``","scale_factor","``","indicates","the","zoom","level",",","and","the","``","center","``","indicates","the","center","position","of","the","view",".","By","default",",","this","camera","inverts","the","y","axis","of","the","scene",".","This","usually","results","in","the","scene","+y","axis","pointing","upward","because","widgets","(","including","ViewBox",")","have","their","+y","axis","pointing","downward",".","Parameters","--","--","--","--","--","rect",":","Rect","A","Rect","object","or","4-element","tuple","that","specifies","the","rectangular","area","to","show",".","aspect",":","float","|","None","The","aspect","ratio","(","i.e",".","scaling",")","between","x","and","y","dimension","of","the","scene",".","E.g",".","to","show","a","square","image","as","square",",","the","aspect","should","be","1",".","If","None","(","default",")","the","x","and","y","dimensions","are","scaled","independently",".","*","*","kwargs",":","dict","Keyword","arguments","to","pass","to","`","BaseCamera","`",".","Notes","--","--","-","Interaction",":","*","LMB",":","pan","the","view","*","RMB","or","scroll",":","zooms","the","view"]
code: def aspect(self, value):
      if value is None:
          self._aspect = None
      else:
          self._aspect = float(value)
      self.view_changed()
  
imports: from __future__ import division
  import numpy
  from .base_camera import BaseCamera
  from ...geometry import Rect
  from ...visuals.transforms import STTransform, MatrixTransform
label_desc: Use image node_id 3 for calling the PanZoomCamera obj's underlying member method code with example usage: obj.aspect(value) without return types