class_docstr: **Bases:** :class:`GraphicsObject <pyqtgraph.GraphicsObject>`
  
  :class:`PlotDataItem` provides a unified interface for displaying plot curves, scatter plots, or both.
  It also contains methods to transform or decimate the original data before it is displayed. 
  
  As pyqtgraph's standard plotting object, ``plot()`` methods such as :func:`pyqtgraph.plot` and
  :func:`PlotItem.plot() <pyqtgraph.PlotItem.plot>` create instances of :class:`PlotDataItem`.
  
  While it is possible to use :class:`PlotCurveItem <pyqtgraph.PlotCurveItem>` or
  :class:`ScatterPlotItem <pyqtgraph.ScatterPlotItem>` individually, this is recommended only
  where performance is critical and the limited functionality of these classes is sufficient.
  
  ==================================  ==============================================
  **Signals:**
  sigPlotChanged(self)                Emitted when the data in this item is updated.
  sigClicked(self, ev)                Emitted when the item is clicked.
  sigPointsClicked(self, points, ev)  Emitted when a plot point is clicked
                                      Sends the list of points under the mouse.
  sigPointsHovered(self, points, ev)  Emitted when a plot point is hovered over.
                                      Sends the list of points under the mouse.
  ==================================  ==============================================
class_docstr_tok: ["*","*","Bases",":","*","*",":","class",":","`","GraphicsObject","<","pyqtgraph.GraphicsObject",">","`",":","class",":","`","PlotDataItem","`","provides","a","unified","interface","for","displaying","plot","curves",",","scatter","plots",",","or","both",".","It","also","contains","methods","to","transform","or","decimate","the","original","data","before","it","is","displayed",".","As","pyqtgraph","'s","standard","plotting","object",",","``","plot","(",")","``","methods","such","as",":","func",":","`","pyqtgraph.plot","`","and",":","func",":","`","PlotItem.plot","(",")","<","pyqtgraph.PlotItem.plot",">","`","create","instances","of",":","class",":","`","PlotDataItem","`",".","While","it","is","possible","to","use",":","class",":","`","PlotCurveItem","<","pyqtgraph.PlotCurveItem",">","`","or",":","class",":","`","ScatterPlotItem","<","pyqtgraph.ScatterPlotItem",">","`","individually",",","this","is","recommended","only","where","performance","is","critical","and","the","limited","functionality","of","these","classes","is","sufficient",".","==================================","==============================================","*","*","Signals",":","*","*","sigPlotChanged","(","self",")","Emitted","when","the","data","in","this","item","is","updated",".","sigClicked","(","self",",","ev",")","Emitted","when","the","item","is","clicked",".","sigPointsClicked","(","self",",","points",",","ev",")","Emitted","when","a","plot","point","is","clicked","Sends","the","list","of","points","under","the","mouse",".","sigPointsHovered","(","self",",","points",",","ev",")","Emitted","when","a","plot","point","is","hovered","over",".","Sends","the","list","of","points","under","the","mouse",".","==================================","=============================================="]
docstr: Returns the range occupied by the data (along a specific axis) in this item.
  This method is called by :class:`ViewBox` when auto-scaling.
  
  =============== ====================================================================
  **Arguments:**
  ax              (0 or 1) the axis for which to return this item's data range
  frac            (float 0.0-1.0) Specifies what fraction of the total data
                  range to return. By default, the entire range is returned.
                  This allows the :class:`ViewBox` to ignore large spikes in the data
                  when auto-scaling.
  orthoRange      ([min,max] or None) Specifies that only the data within the
                  given range (orthogonal to *ax*) should me measured when
                  returning the data range. (For example, a ViewBox might ask
                  what is the y-range of all data with x-values between min
                  and max)
  =============== ====================================================================
docstr_tok: ["Returns","the","range","occupied","by","the","data","(","along","a","specific","axis",")","in","this","item",".","This","method","is","called","by",":","class",":","`","ViewBox","`","when","auto-scaling",".","===============","====================================================================","*","*","Arguments",":","*","*","ax","(","0","or","1",")","the","axis","for","which","to","return","this","item","'s","data","range","frac","(","float","0.0-1.0",")","Specifies","what","fraction","of","the","total","data","range","to","return",".","By","default",",","the","entire","range","is","returned",".","This","allows","the",":","class",":","`","ViewBox","`","to","ignore","large","spikes","in","the","data","when","auto-scaling",".","orthoRange","(","[","min",",","max","]","or","None",")","Specifies","that","only","the","data","within","the","given","range","(","orthogonal","to","*","ax","*",")","should","me","measured","when","returning","the","data","range",".","(","For","example",",","a","ViewBox","might","ask","what","is","the","y-range","of","all","data","with","x-values","between","min","and","max",")","===============","===================================================================="]
code: def dataBounds(self, ax, frac=1.0, orthoRange=None):
      """
      Returns the range occupied by the data (along a specific axis) in this item.
      This method is called by :class:`ViewBox` when auto-scaling.
  
      =============== ====================================================================
      **Arguments:**
      ax              (0 or 1) the axis for which to return this item's data range
      frac            (float 0.0-1.0) Specifies what fraction of the total data
                      range to return. By default, the entire range is returned.
                      This allows the :class:`ViewBox` to ignore large spikes in the data
                      when auto-scaling.
      orthoRange      ([min,max] or None) Specifies that only the data within the
                      given range (orthogonal to *ax*) should me measured when
                      returning the data range. (For example, a ViewBox might ask
                      what is the y-range of all data with x-values between min
                      and max)
      =============== ====================================================================
      """
      range = [None, None]
      if self.curve.isVisible():
          range = self.curve.dataBounds(ax, frac, orthoRange)
      elif self.scatter.isVisible():
          r2 = self.scatter.dataBounds(ax, frac, orthoRange)
          range = [
              r2[0]
              if range[0] is None
              else (
                  range[0] if r2[0] is None else min(r2[0], range[0])
              ),
              r2[1]
              if range[1] is None
              else (
                  range[1] if r2[1] is None else min(r2[1], range[1])
              ),
          ]
      return range
  
imports: import math
  import warnings
  import bisect
  import numpy
  from ..None import debug
  from ..None import functions
  from ..None import getConfigOption
  from ..Qt import QtCore
  from .GraphicsObject import GraphicsObject
  from .PlotCurveItem import PlotCurveItem
  from .ScatterPlotItem import ScatterPlotItem
label_desc: Use image node_id 34 for calling the PlotDataItem obj's underlying member method code with example usage: obj.dataBounds(ax, frac, orthoRange) and returns: range