'There are many different ways to create a PlotDataItem:
**Data initialization arguments:** (x,y data only)
PlotDataItem(xValues, yValues)      x and y values may be any sequence (including ndarray) of real numbers
PlotDataItem(yValues)               y values only -- x will be automatically set to range(len(y))
PlotDataItem(x=xValues, y=yValues)  x and y given by keyword arguments
PlotDataItem(ndarray(Nx2))          numpy array with shape (N, 2) where x=data[:,0] and y=data[:,1]
**Data initialization arguments:** (x,y data AND may include spot style)
PlotDataItem(recarray)        numpy array with dtype=[(\'x\', float), (\'y\', float), ...]
PlotDataItem(list-of-dicts)   [{\'x\': x, \'y\': y, ...},   ...]
PlotDataItem(dict-of-lists)   {\'x\': [...], \'y\': [...],  ...}
PlotDataItem(MetaArray)       1D array of Y values with X sepecified as axis values
OR 2D array with a column \'y\' and extra columns as needed.
**Line style keyword arguments:**
connect      Specifies how / whether vertexes should be connected. See
:func:`arrayToQPath() <pyqtgraph.arrayToQPath>`
pen          Pen to use for drawing line between points.
Default is solid grey, 1px width. Use None to disable line drawing.
May be any single argument accepted by :func:`mkPen() <pyqtgraph.mkPen>`
shadowPen    Pen for secondary line to draw behind the primary line. disabled by default.
May be any single argument accepted by :func:`mkPen() <pyqtgraph.mkPen>`
fillLevel    Fill the area between the curve and fillLevel
fillBrush    Fill to use when fillLevel is specified.
May be any single argument accepted by :func:`mkBrush() <pyqtgraph.mkBrush>`
stepMode     If True, two orthogonal lines are drawn for each sample
as steps. This is commonly used when drawing histograms.
Note that in this case, `len(x) == len(y) + 1`
(added in version 0.9.9)
**Point style keyword arguments:**  (see :func:`ScatterPlotItem.setData() <pyqtgraph.ScatterPlotItem.setData>` for more information)
symbol         Symbol to use for drawing points OR list of symbols,
one per point. Default is no symbol.
Options are o, s, t, d, +, or any QPainterPath
symbolPen      Outline pen for drawing points OR list of pens, one
per point. May be any single argument accepted by
:func:`mkPen() <pyqtgraph.mkPen>`
symbolBrush    Brush for filling points OR list of brushes, one per
point. May be any single argument accepted by
:func:`mkBrush() <pyqtgraph.mkBrush>`
symbolSize     Diameter of symbols OR list of diameters.
pxMode         (bool) If True, then symbolSize is specified in
pixels. If False, then symbolSize is
specified in data coordinates.
**Optimization keyword arguments:**
antialias        (bool) By default, antialiasing is disabled to improve performance.
Note that in some cases (in particluar, when pxMode=True), points
will be rendered antialiased even if this is set to False.
decimate         deprecated.
downsample       (int) Reduce the number of samples displayed by this value
downsampleMethod \'subsample\': Downsample by taking the first of N samples.
This method is fastest and least accurate.
\'mean\': Downsample by taking the mean of N samples.
\'peak\': Downsample by drawing a saw wave that follows the min
and max of the original data. This method produces the best
visual representation of the data but is slower.
autoDownsample   (bool) If True, resample the data before plotting to avoid plotting
multiple line segments per pixel. This can improve performance when
viewing very high-density data, but increases the initial overhead
and memory usage.
clipToView       (bool) If True, only plot data that is visible within the X range of
the containing ViewBox. This can improve performance when plotting
very large data sets where only a fraction of the data is visible
at any time.
identical        *deprecated*
**Meta-info keyword arguments:**
name         name of dataset. This would appear in a legend'

def __init__(self, *args, **kargs):

    GraphicsObject.__init__(self)
    self.setFlag(self.ItemHasNoContents)
    self.xData = None
    self.yData = None
    self.xDisp = None
    self.yDisp = None
    self.curve = PlotCurveItem()
    self.scatter = ScatterPlotItem()
    self.curve.setParentItem(self)
    self.scatter.setParentItem(self)
    self.curve.sigClicked.connect(self.curveClicked)
    self.scatter.sigClicked.connect(self.scatterClicked)
    self.opts = {'connect': 'all', 'fftMode': False, 'logMode': [False, False], 'alphaHint': 1.0, 'alphaMode': False, 'pen': (200, 200, 200), 'shadowPen': None, 'fillLevel': None, 'fillBrush': None, 'stepMode': None, 'symbol': None, 'symbolSize': 10, 'symbolPen': (200, 200, 200), 'symbolBrush': (50, 50, 150), 'pxMode': True, 'antialias': getConfigOption('antialias'), 'pointMode': None, 'downsample': 1, 'autoDownsample': False, 'downsampleMethod': 'peak', 'autoDownsampleFactor': 5.0, 'clipToView': False, 'data': None}
    self.setData(*args, **kargs)
