.. wxPython Phoenix documentation

   This file was generated by Phoenix's sphinx generator and associated
   tools, do not edit by hand.

   Copyright: (c) 2011-2017 by Total Control Software
   License:   wxWindows License

.. include:: headings.inc

.. currentmodule:: wx.lib.plot.polyobjects

.. highlight:: python



.. _wx.lib.plot.polyobjects.PolyBoxPlot:

==========================================================================================================================================
|phoenix_title|  **wx.lib.plot.polyobjects.PolyBoxPlot**
==========================================================================================================================================

Creates a PolyBoxPlot object.

:param data: Raw data to create a box plot from.
:type data: sequence of int or float
:param **attr: keyword attributes

=================================  =============  =======================
Keyword and Default                Description    Type
=================================  =============  =======================
``colour='black'``                 edge color     :class:`wx.Colour`
``width=1``                        edge width     float
``style=wx.PENSTYLE_SOLID``        edge style     :class:`wx.PenStyle`
``legend=''``                      legend string  str
=================================  =============  =======================

.. note::

   ``np.NaN`` and ``np.inf`` values are ignored.

.. admonition:: TODO

   + [ ] Figure out a better way to get multiple box plots side-by-side
     (current method is a hack).
   + [ ] change the X axis to some labels.
   + [ ] Change getClosestPoint to only grab box plot items and outlers?
     Currently grabs every data point.
   + [ ] Add more customization such as Pens/Brushes, outlier shapes/size,
     and box width.
   + [ ] Figure out how I want to handle log-y: log data then calcBP? Or
     should I calc the BP first then the plot it on a log scale?



|

|class_hierarchy| Class Hierarchy
=================================

.. raw:: html

   <div id="toggleBlock" onclick="return toggleVisibility(this)" class="closed" style="cursor:pointer;">
   <img id="toggleBlock-trigger" src="_static/images/closed.png"/>
   Inheritance diagram for class <strong>PolyBoxPlot</strong>:
   </div>
   <div id="toggleBlock-summary" style="display:block;"></div>
   <div id="toggleBlock-content" style="display:none;">
   <p class="graphviz">
   <center><img src="_static/images/inheritance/wx.lib.plot.polyobjects.PolyBoxPlot_inheritance.png" alt="Inheritance diagram of PolyBoxPlot" usemap="#dummy" class="inheritance"/></center>
   </div>
   <script type="text/javascript">toggleVisibilityOnLoad(document.getElementById('toggleBlock'))</script>
   <map id="dummy" name="dummy"> <area shape="rect" id="node1" href="wx.lib.plot.polyobjects.PolyPoints.html" title="wx.lib.plot.polyobjects.PolyPoints" alt="" coords="9,5,239,35"/> <area shape="rect" id="node2" href="wx.lib.plot.polyobjects.PolyBoxPlot.html" title="wx.lib.plot.polyobjects.PolyBoxPlot" alt="" coords="5,83,243,112"/> </map> 
   </p>

|


|super_classes| Known Superclasses
==================================

:class:`wx.lib.plot.polyobjects.PolyPoints`

|


|method_summary| Methods Summary
================================

================================================================================ ================================================================================
:meth:`~wx.lib.plot.polyobjects.PolyBoxPlot.__init__`                            
:meth:`~wx.lib.plot.polyobjects.PolyBoxPlot.boundingBox`                         Returns bounding box for the plot.
:meth:`~wx.lib.plot.polyobjects.PolyBoxPlot.calcBpData`                          Box plot points
:meth:`~wx.lib.plot.polyobjects.PolyBoxPlot.calcOutliers`                        Calculates the outliers. Must be called after calcBpData.
:meth:`~wx.lib.plot.polyobjects.PolyBoxPlot.draw`                                Draws a box plot on the DC.
:meth:`~wx.lib.plot.polyobjects.PolyBoxPlot.getClosestPoint`                     Returns the index of closest point on the curve, pointXY,
:meth:`~wx.lib.plot.polyobjects.PolyBoxPlot.getSymExtent`                        Width and Height of Marker
================================================================================ ================================================================================


|


|api| Class API
===============


.. class:: PolyBoxPlot(PolyPoints)

   Creates a PolyBoxPlot object.
   
   :param data: Raw data to create a box plot from.
   :type data: sequence of int or float
   :param **attr: keyword attributes
   
   =================================  =============  =======================
   Keyword and Default                Description    Type
   =================================  =============  =======================
   ``colour='black'``                 edge color     :class:`wx.Colour`
   ``width=1``                        edge width     float
   ``style=wx.PENSTYLE_SOLID``        edge style     :class:`wx.PenStyle`
   ``legend=''``                      legend string  str
   =================================  =============  =======================
   
   .. note::
   
      ``np.NaN`` and ``np.inf`` values are ignored.
   
   .. admonition:: TODO
   
      + [ ] Figure out a better way to get multiple box plots side-by-side
        (current method is a hack).
      + [ ] change the X axis to some labels.
      + [ ] Change getClosestPoint to only grab box plot items and outlers?
        Currently grabs every data point.
      + [ ] Add more customization such as Pens/Brushes, outlier shapes/size,
        and box width.
      + [ ] Figure out how I want to handle log-y: log data then calcBP? Or
        should I calc the BP first then the plot it on a log scale?

   .. method:: __init__(self, points, \*\*attr)


   .. method:: boundingBox(self)

      Returns bounding box for the plot.
      
      Override method.


   .. method:: calcBpData(self, data=None)

      Box plot points:
      
      Median (50%)
      75%
      25%
      low_whisker = lowest value that's >= (25% - (IQR * 1.5))
      high_whisker = highest value that's <= 75% + (IQR * 1.5)
      
      outliers are outside of 1.5 * IQR
      
      Parameters
      ----------
      data : array-like
          The data to plot
      
      Returns
      -------
      bpdata : collections.namedtuple
          Descriptive statistics for data:
          (min_data, low_whisker, q25, median, q75, high_whisker, max_data)


   .. method:: calcOutliers(self, data=None)

      Calculates the outliers. Must be called after calcBpData.


   .. method:: wrapper(instance, dc, \*args, \*\*kwargs)

      Draws a box plot on the DC.
      
      Notes
      -----
      The following draw order is required:
      
      1. First the whisker line
      2. Then the IQR box
      3. Lasly the median line.
      
      This is because
      
      + The whiskers are drawn as single line rather than two lines
      + The median line must be visable over the box if the box has a fill.
      
      Other than that, the draw order can be changed.


   .. method:: getClosestPoint(self, pntXY, pointScaled=True)

      Returns the index of closest point on the curve, pointXY,
      scaledXY, distance x, y in user coords.
      
      Override method.
      
      if pointScaled == True, then based on screen coords
      if pointScaled == False, then based on user coords


   .. method:: getSymExtent(self, printerScale)

      Width and Height of Marker


