Source code for highcharts_core.options.series.bar

from typing import Optional, List

from highcharts_core import constants
from highcharts_core.decorators import validate_types
from highcharts_core.options.series.base import SeriesBase
from highcharts_core.options.series.data.cartesian import (CartesianData, 
                                                           Cartesian3DData,
                                                           CartesianDataCollection,
                                                           Cartesian3DDataCollection)
from highcharts_core.options.series.data.bar import (BarData, 
                                                     BarDataCollection,
                                                     WaterfallData, 
                                                     WaterfallDataCollection,
                                                     WindBarbData, 
                                                     WindBarbDataCollection,
                                                     XRangeData,
                                                     XRangeDataCollection)
from highcharts_core.options.series.data.range import RangeData, RangeDataCollection
from highcharts_core.options.plot_options.bar import (BaseBarOptions, 
                                                      BarOptions, 
                                                      WaterfallOptions,
                                                      WindBarbOptions, 
                                                      XRangeOptions)
from highcharts_core.utility_functions import mro__to_untrimmed_dict, is_ndarray


class BaseBarSeries(SeriesBase, BaseBarOptions):
    """Base class used for all bar/column series."""

    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    @classmethod
    def _data_collection_class(cls):
        """Returns the class object used for the data collection.
        
        :rtype: :class:`DataPointCollection <highcharts_core.options.series.data.collections.DataPointCollection>`
          descendent
        """
        return BarDataCollection
    
    @classmethod
    def _data_point_class(cls):
        """Returns the class object used for individual data points.
        
        :rtype: :class:`DataBase <highcharts_core.options.series.data.base.DataBase>` 
          descendent
        """
        return BarData

    @property
    def data(self) -> Optional[List[BarData] | BarDataCollection]:
        """Collection of data that represents the series. Defaults to
        :obj:`None <python:None>`.

        While the series type returns a collection of :class:`BarData` instances,
        it accepts as input three different types of data:

        .. tabs::

          .. tab:: 1D Collection

            .. code-block::

              series = BarSeries()
              series.data = [0, 5, 3, 5]

            A one-dimensional collection of numerical values. Each member of the
            collection will be interpreted as a ``y``-value, with its corresponding ``x``
            value automatically determined.

            If :meth:`BarSeries.point_start` is :obj:`None <python:None>`, ``x`` values
            will begin at ``0``. Otherwise, they will start at ``point_start``.

            If :meth:`BarSeries.point_interval` is :obj:`None <python:None>`, ``x``
            values will be incremented by ``1``. Otherwise, they will be incremented
            by the value of ``point_interval``.

          .. tab:: 2D Collection

            .. code-block::

              series = BarSeries()
              # Category X-axis
              series.data = [
                  ['Category A', 0],
                  ['Category B', 5],
                  ['Category C', 3],
                  ['Category D', 5]
              ]

              # Numerical X-axis
              series.data = [
                  [9, 0],
                  [1, 5],
                  [2, 3],
                  [7, 5]
              ]

            A two-dimensional collection of values. Each member of the collection will be
            interpreted as an ``x`` and ``y`` pair. The ``x`` value can be a
            :class:`str <python:str>`, :class:`date <python:datetime.date>`,
            :class:`datetime <python:datetime.datetime>`, or numeric value.

            .. note::

              If the ``x`` value is a :class:`str <python:str>`, it will be interpreted
              as the name of the data point.

          .. tab:: Object Collection

            A one-dimensional collection of :class:`BarData` objects.

        :rtype: :class:`list <python:list>` of :class:`BarData` or
          :class:`BarDataCollection`
          :obj:`None <python:None>`
        """
        return self._data

    @data.setter
    def data(self, value):
        if not is_ndarray(value) and not value:
            self._data = None
        else:
            self._data = BarData.from_array(value)

    @classmethod
    def _get_kwargs_from_dict(cls, as_dict):
        kwargs = {
            'accessibility': as_dict.get('accessibility', None),
            'allow_point_select': as_dict.get('allowPointSelect', None),
            'animation': as_dict.get('animation', None),
            'class_name': as_dict.get('className', None),
            'clip': as_dict.get('clip', None),
            'color': as_dict.get('color', None),
            'cursor': as_dict.get('cursor', None),
            'custom': as_dict.get('custom', None),
            'dash_style': as_dict.get('dashStyle', None),
            'data_labels': as_dict.get('dataLabels', None),
            'description': as_dict.get('description', None),
            'enable_mouse_tracking': as_dict.get('enableMouseTracking', None),
            'events': as_dict.get('events', None),
            'include_in_data_export': as_dict.get('includeInDataExport', None),
            'keys': as_dict.get('keys', None),
            'label': as_dict.get('label', None),
            'legend_symbol': as_dict.get('legendSymbol', None),
            'linked_to': as_dict.get('linkedTo', None),
            'marker': as_dict.get('marker', None),
            'on_point': as_dict.get('onPoint', None),
            'opacity': as_dict.get('opacity', None),
            'point': as_dict.get('point', None),
            'point_description_formatter': as_dict.get('pointDescriptionFormatter', None),
            'selected': as_dict.get('selected', None),
            'show_checkbox': as_dict.get('showCheckbox', None),
            'show_in_legend': as_dict.get('showInLegend', None),
            'skip_keyboard_navigation': as_dict.get('skipKeyboardNavigation', None),
            'sonification': as_dict.get('sonification', None),
            'states': as_dict.get('states', None),
            'sticky_tracking': as_dict.get('stickyTracking', None),
            'threshold': as_dict.get('threshold', None),
            'tooltip': as_dict.get('tooltip', None),
            'turbo_threshold': as_dict.get('turboThreshold', None),
            'visible': as_dict.get('visible', None),

            'animation_limit': as_dict.get('animationLimit', None),
            'boost_blending': as_dict.get('boostBlending', None),
            'boost_threshold': as_dict.get('boostThreshold', None),
            'color_axis': as_dict.get('colorAxis', None),
            'color_index': as_dict.get('colorIndex', None),
            'color_key': as_dict.get('colorKey', None),
            'connect_ends': as_dict.get('connectEnds', None),
            'connect_nulls': as_dict.get('connectNulls', None),
            'crisp': as_dict.get('crisp', None),
            'crop_threshold': as_dict.get('cropThreshold', None),
            'data_sorting': as_dict.get('dataSorting', None),
            'drag_drop': as_dict.get('dragDrop', None),
            'fill_color': as_dict.get('fillColor', None),
            'fill_opacity': as_dict.get('fillOpacity', None),
            'find_nearest_point_by': as_dict.get('findNearestPointBy', None),
            'get_extremes_from_all': as_dict.get('getExtremesFromAll', None),
            'inactive_other_points': as_dict.get('inactiveOtherPoints', None),
            'linecap': as_dict.get('linecap', None),
            'line_color': as_dict.get('lineColor', None),
            'line_width': as_dict.get('lineWidth', None),
            'negative_color': as_dict.get('negativeColor', None),
            'negative_fill_color': as_dict.get('negativeFillColor', None),
            'point_interval': as_dict.get('pointInterval', None),
            'point_interval_unit': as_dict.get('pointIntervalUnit', None),
            'point_placement': as_dict.get('pointPlacement', None),
            'point_start': as_dict.get('pointStart', None),
            'relative_x_value': as_dict.get('relativeXValue', None),
            'shadow': as_dict.get('shadow', None),
            'soft_threshold': as_dict.get('softThreshold', None),
            'stacking': as_dict.get('stacking', None),
            'step': as_dict.get('step', None),
            'track_by_area': as_dict.get('trackByArea', None),
            'zone_axis': as_dict.get('zoneAxis', None),
            'zones': as_dict.get('zones', None),

            'border_color': as_dict.get('borderColor', None),
            'border_radius': as_dict.get('borderRadius', None),
            'border_width': as_dict.get('borderWidth', None),
            'center_in_category': as_dict.get('centerInCategory', None),
            'color_by_point': as_dict.get('colorByPoint', None),
            'colors': as_dict.get('colors', None),
            'grouping': as_dict.get('grouping', None),
            'group_padding': as_dict.get('groupPadding', None),
            'max_point_width': as_dict.get('maxPointWidth', None),
            'min_point_length': as_dict.get('minPointLength', None),
            'point_padding': as_dict.get('pointPadding', None),
            'point_range': as_dict.get('pointRange', None),
            'point_width': as_dict.get('pointWidth', None),

            'data': as_dict.get('data', None),
            'id': as_dict.get('id', None),
            'index': as_dict.get('index', None),
            'legend_index': as_dict.get('legendIndex', None),
            'name': as_dict.get('name', None),
            'stack': as_dict.get('stack', None),
            'x_axis': as_dict.get('xAxis', None),
            'y_axis': as_dict.get('yAxis', None),
            'z_index': as_dict.get('zIndex', None),
        }

        return kwargs

    def _to_untrimmed_dict(self, in_cls = None) -> dict:
        untrimmed = mro__to_untrimmed_dict(self, in_cls = in_cls)

        return untrimmed


[docs]class BarSeries(BaseBarSeries, BarOptions): """Options to apply to a Bar series. .. note:: A bar series is a special type of column series where the columns are horizontal. .. figure:: ../../../_static/bar-example.png :alt: Bar Example Chart :align: center """ def __init__(self, **kwargs): super().__init__(**kwargs) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'accessibility': as_dict.get('accessibility', None), 'allow_point_select': as_dict.get('allowPointSelect', None), 'animation': as_dict.get('animation', None), 'class_name': as_dict.get('className', None), 'clip': as_dict.get('clip', None), 'color': as_dict.get('color', None), 'cursor': as_dict.get('cursor', None), 'custom': as_dict.get('custom', None), 'dash_style': as_dict.get('dashStyle', None), 'data_labels': as_dict.get('dataLabels', None), 'description': as_dict.get('description', None), 'enable_mouse_tracking': as_dict.get('enableMouseTracking', None), 'events': as_dict.get('events', None), 'include_in_data_export': as_dict.get('includeInDataExport', None), 'keys': as_dict.get('keys', None), 'label': as_dict.get('label', None), 'legend_symbol': as_dict.get('legendSymbol', None), 'linked_to': as_dict.get('linkedTo', None), 'marker': as_dict.get('marker', None), 'on_point': as_dict.get('onPoint', None), 'opacity': as_dict.get('opacity', None), 'point': as_dict.get('point', None), 'point_description_formatter': as_dict.get('pointDescriptionFormatter', None), 'selected': as_dict.get('selected', None), 'show_checkbox': as_dict.get('showCheckbox', None), 'show_in_legend': as_dict.get('showInLegend', None), 'skip_keyboard_navigation': as_dict.get('skipKeyboardNavigation', None), 'sonification': as_dict.get('sonification', None), 'states': as_dict.get('states', None), 'sticky_tracking': as_dict.get('stickyTracking', None), 'threshold': as_dict.get('threshold', None), 'tooltip': as_dict.get('tooltip', None), 'turbo_threshold': as_dict.get('turboThreshold', None), 'visible': as_dict.get('visible', None), 'animation_limit': as_dict.get('animationLimit', None), 'boost_blending': as_dict.get('boostBlending', None), 'boost_threshold': as_dict.get('boostThreshold', None), 'color_axis': as_dict.get('colorAxis', None), 'color_index': as_dict.get('colorIndex', None), 'color_key': as_dict.get('colorKey', None), 'connect_ends': as_dict.get('connectEnds', None), 'connect_nulls': as_dict.get('connectNulls', None), 'crisp': as_dict.get('crisp', None), 'crop_threshold': as_dict.get('cropThreshold', None), 'data_sorting': as_dict.get('dataSorting', None), 'drag_drop': as_dict.get('dragDrop', None), 'fill_color': as_dict.get('fillColor', None), 'fill_opacity': as_dict.get('fillOpacity', None), 'find_nearest_point_by': as_dict.get('findNearestPointBy', None), 'get_extremes_from_all': as_dict.get('getExtremesFromAll', None), 'inactive_other_points': as_dict.get('inactiveOtherPoints', None), 'linecap': as_dict.get('linecap', None), 'line_color': as_dict.get('lineColor', None), 'line_width': as_dict.get('lineWidth', None), 'negative_color': as_dict.get('negativeColor', None), 'negative_fill_color': as_dict.get('negativeFillColor', None), 'point_interval': as_dict.get('pointInterval', None), 'point_interval_unit': as_dict.get('pointIntervalUnit', None), 'point_placement': as_dict.get('pointPlacement', None), 'point_start': as_dict.get('pointStart', None), 'relative_x_value': as_dict.get('relativeXValue', None), 'shadow': as_dict.get('shadow', None), 'soft_threshold': as_dict.get('softThreshold', None), 'stacking': as_dict.get('stacking', None), 'step': as_dict.get('step', None), 'track_by_area': as_dict.get('trackByArea', None), 'zone_axis': as_dict.get('zoneAxis', None), 'zones': as_dict.get('zones', None), 'border_color': as_dict.get('borderColor', None), 'border_radius': as_dict.get('borderRadius', None), 'border_width': as_dict.get('borderWidth', None), 'center_in_category': as_dict.get('centerInCategory', None), 'color_by_point': as_dict.get('colorByPoint', None), 'colors': as_dict.get('colors', None), 'grouping': as_dict.get('grouping', None), 'group_padding': as_dict.get('groupPadding', None), 'max_point_width': as_dict.get('maxPointWidth', None), 'min_point_length': as_dict.get('minPointLength', None), 'point_padding': as_dict.get('pointPadding', None), 'point_range': as_dict.get('pointRange', None), 'point_width': as_dict.get('pointWidth', None), 'depth': as_dict.get('depth', None), 'edge_color': as_dict.get('edgeColor', None), 'edge_width': as_dict.get('edgeWidth', None), 'group_z_padding': as_dict.get('groupZPadding', None), 'data': as_dict.get('data', None), 'id': as_dict.get('id', None), 'index': as_dict.get('index', None), 'legend_index': as_dict.get('legendIndex', None), 'name': as_dict.get('name', None), 'stack': as_dict.get('stack', None), 'x_axis': as_dict.get('xAxis', None), 'y_axis': as_dict.get('yAxis', None), 'z_index': as_dict.get('zIndex', None), } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = mro__to_untrimmed_dict(self, in_cls = in_cls) return untrimmed
[docs]class ColumnSeries(BarSeries): """Options to apply to a Column series types. Column series display one column per value along an X axis. .. figure:: ../../../_static/column-example.png :alt: Column Example Chart :align: center """ pass
[docs]class ColumnPyramidSeries(ColumnSeries): """Options to apply to a Column Pyramid series. Column Pyramid series display one pyramid per value along an X axis. .. hint:: To display horizontal pyramids, set :meth:`Chart.inverted` to ``True``. .. tabs:: .. tab:: Standard .. figure:: ../../../_static/columnpyramid-example.png :alt: ColumnPyramid Example Chart :align: center .. tab:: Stacked .. figure:: ../../../_static/columnpyramid-example-stacked.png :alt: Stacked Column Pyramid Example Chart :align: center .. tab:: Stacked + Inverted .. figure:: ../../../_static/columnpyramid-example-stacked-horizontal.png :alt: Stacked and Inverted Column Pyramid Example Chart :align: center """ @classmethod def _data_collection_class(cls): """Returns the class object used for the data collection. :rtype: :class:`DataPointCollection <highcharts_core.options.series.data.collections.DataPointCollection>` descendent """ return CartesianDataCollection @classmethod def _data_point_class(cls): """Returns the class object used for individual data points. :rtype: :class:`DataBase <highcharts_core.options.series.data.base.DataBase>` descendent """ return CartesianData @property def data(self) -> Optional[List[CartesianData] | CartesianDataCollection]: """Collection of data that represents the series. Defaults to :obj:`None <python:None>`. While the series type returns a collection of :class:`CartesianData` instances, it accepts as input three different types of data: .. tabs:: .. tab:: 1D Collection .. code-block:: area_series = AreaSeries() area_series.data = [0, 5, 3, 5] A one-dimensional collection of numerical values. Each member of the collection will be interpreted as a ``y``-value, with its corresponding ``x`` value automatically determined. If :meth:`AreaSeries.point_start` is :obj:`None <python:None>`, ``x`` values will begin at ``0``. Otherwise, they will start at ``point_start``. If :meth:`AreaSeries.point_interval` is :obj:`None <python:None>`, ``x`` values will be incremented by ``1``. Otherwise, they will be incremented by the value of ``point_interval``. .. tab:: 2D Collection .. code-block:: area_series = AreaSeries() # Category X-axis area_series.data = [ ['Category A', 0], ['Category B', 5], ['Category C', 3], ['Category D', 5] ] # Numerical X-axis area_series.data = [ [9, 0], [1, 5], [2, 3], [7, 5] ] A two-dimensional collection of values. Each member of the collection will be interpreted as an ``x`` and ``y`` pair. The ``x`` value can be a :class:`str <python:str>`, :class:`date <python:datetime.date>`, :class:`datetime <python:datetime.datetime>`, or numeric value. .. note:: If the ``x`` value is a :class:`str <python:str>`, it will be interpreted as the name of the data point. .. tab:: Object Collection A one-dimensional collection of :class:`CartesianData` objects. :rtype: :class:`list <python:list>` of :class:`CartesianData` or :class:`CartesianDataCollection` or :obj:`None <python:None>` """ return self._data @data.setter def data(self, value): if not is_ndarray(value) and not value: self._data = None else: self._data = CartesianData.from_array(value)
[docs]class ColumnRangeSeries(ColumnSeries): """Options to apply to a Column Range series. The column range is a cartesian series type with higher and lower Y values along an X axis. .. hint:: To display horizontal bars, set :meth:`Chart.inverted` to ``True``. .. tabs:: .. tab:: Standard .. figure:: ../../../_static/columnrange-example.png :alt: ColumnRange Example Chart :align: center .. tab:: Horizontal .. figure:: ../../../_static/columnrange-example-horizontal.png :alt: Inverted Column Range Example Chart :align: center """ @classmethod def _data_collection_class(cls): """Returns the class object used for the data collection. :rtype: :class:`DataPointCollection <highcharts_core.options.series.data.collections.DataPointCollection>` descendent """ return RangeDataCollection @classmethod def _data_point_class(cls): """Returns the class object used for individual data points. :rtype: :class:`DataBase <highcharts_core.options.series.data.base.DataBase>` descendent """ return RangeData @property def data(self) -> Optional[List[RangeData] | RangeDataCollection]: """Collection of data that represents the series. Defaults to :obj:`None <python:None>`. While the series type returns a collection of :class:`RangeData` instances, it accepts as input three different types of data: .. tabs:: .. tab:: 1D Collection .. code-block:: area_series = AreaSeries() area_series.data = [0, 5, 3, 5] A one-dimensional collection of numerical values. Each member of the collection will be interpreted as a ``y``-value, with its corresponding ``x`` value automatically determined. If :meth:`AreaSeries.point_start` is :obj:`None <python:None>`, ``x`` values will begin at ``0``. Otherwise, they will start at ``point_start``. If :meth:`AreaSeries.point_interval` is :obj:`None <python:None>`, ``x`` values will be incremented by ``1``. Otherwise, they will be incremented by the value of ``point_interval``. .. tab:: 2D Collection .. code-block:: area_series = AreaSeries() # Category X-axis area_series.data = [ ['Category A', 0], ['Category B', 5], ['Category C', 3], ['Category D', 5] ] # Numerical X-axis area_series.data = [ [9, 0], [1, 5], [2, 3], [7, 5] ] A two-dimensional collection of values. Each member of the collection will be interpreted as an ``x`` and ``y`` pair. The ``x`` value can be a :class:`str <python:str>`, :class:`date <python:datetime.date>`, :class:`datetime <python:datetime.datetime>`, or numeric value. .. note:: If the ``x`` value is a :class:`str <python:str>`, it will be interpreted as the name of the data point. .. tab:: Object Collection A one-dimensional collection of :class:`RangeData` objects. :rtype: :class:`list <python:list>` of :class:`RangeData` or :class:`RangeDataCollection` or :obj:`None <python:None>` """ return self._data @data.setter def data(self, value): if not is_ndarray(value) and not value: self._data = None else: self._data = RangeData.from_array(value)
[docs]class CylinderSeries(BarSeries): """Options to apply to a Cylinder series. A cylinder graph is a variation of a 3d column graph. The cylinder graph features cylindrical points. .. figure:: ../../../_static/cylinder-example.png :alt: Cylinder Example Chart :align: center """ pass
[docs]class VariwideSeries(BaseBarSeries): """Options to apply to a Variwide series. A variwide chart (related to marimekko chart) is a column chart with a variable width expressing a third dimension. .. tabs:: .. tab:: Standard Variwide .. figure:: ../../../_static/variwide-example.png :alt: Variwide Example Chart :align: center .. tab:: Inverted Variwide .. figure:: ../../../_static/variwide-example-inverted.png :alt: Variwide Example Chart :align: center .. tab:: with Datetime Axis .. figure:: ../../../_static/variwide-example-datetime.png :alt: Variwide Example Chart :align: center """ @classmethod def _data_collection_class(cls): """Returns the class object used for the data collection. :rtype: :class:`DataPointCollection <highcharts_core.options.series.data.collections.DataPointCollection>` descendent """ return Cartesian3DDataCollection @classmethod def _data_point_class(cls): """Returns the class object used for individual data points. :rtype: :class:`DataBase <highcharts_core.options.series.data.base.DataBase>` descendent """ return Cartesian3DData @property def data(self) -> Optional[List[Cartesian3DData] | Cartesian3DDataCollection]: """Collection of data that represents the series. Defaults to :obj:`None <python:None>`. While the series type returns a collection of :class:`Cartesian3DData` instances, it accepts as input three different types of data: .. tabs:: .. tab:: 2D Collection .. code-block:: series = VariwideSeries() series.data = [ [0, 2], [5, 1], [3, 7], [5, 1] ] A two-dimensional collection of numerical values, where the dimensions correspond to the ``y`` and ``z`` values, respectively. This structure automatically infers the ``x`` value, such that if :meth:`VariwideSeries.point_start` is :obj:`None <python:None>`, ``x`` values will begin at ``0``. Otherwise, they will start at ``point_start``. If :meth:`VariwideSeries.point_interval` is :obj:`None <python:None>`, ``x`` values will be incremented by ``1``. Otherwise, they will be incremented by the value of ``point_interval``. .. tab:: 3D Collection .. code-block:: series = VariwideSeries() # Category X-axis series.data = [ ['Category A', 0, 2], ['Category B', 5, 1], ['Category C', 3, 7], ['Category D', 5, 1] ] # Numerical X-axis series.data = [ [9, 0, 2], [1, 5, 1], [2, 3, 7], [7, 5, 1] ] A three-dimensional collection of values. Each member of the collection will be interpreted as an ``x``, ``y``, and ``z`` value respectively. The ``x`` value can be a :class:`str <python:str>`, :class:`date <python:datetime.date>`, :class:`datetime <python:datetime.datetime>`, or numeric value. .. note:: If the ``x`` value is a :class:`str <python:str>`, it will be interpreted as the name of the data point. .. tab:: Object Collection A one-dimensional collection of :class:`Cartesian3DData` objects. :rtype: :class:`list <python:list>` of :class:`Cartesian3DData` or :class:`Cartesian3DDataCollection` or :obj:`None <python:None>` """ return self._data @data.setter def data(self, value): if not is_ndarray(value) and not value: self._data = None else: self._data = Cartesian3DData.from_array(value)
[docs]class WaterfallSeries(ColumnSeries, WaterfallOptions): """Options to apply to a Waterfall series. A waterfall chart displays sequentially introduced positive or negative values in cumulative columns. .. tabs:: .. tab:: Standard Waterfall .. figure:: ../../../_static/waterfall-example.png :alt: Waterfall Example Chart :align: center .. tab:: Horizontal (Inverted) Waterfall .. figure:: ../../../_static/waterfall-example-inverted.png :alt: Waterfall Example Chart :align: center .. tab:: Stacked Waterfall .. figure:: ../../../_static/waterfall-example-stacked.png :alt: Waterfall Example Chart :align: center """ def __init__(self, **kwargs): super().__init__(**kwargs) @classmethod def _data_collection_class(cls): """Returns the class object used for the data collection. :rtype: :class:`DataPointCollection <highcharts_core.options.series.data.collections.DataPointCollection>` descendent """ return WaterfallDataCollection @classmethod def _data_point_class(cls): """Returns the class object used for individual data points. :rtype: :class:`DataBase <highcharts_core.options.series.data.base.DataBase>` descendent """ return WaterfallData @property def data(self) -> Optional[List[WaterfallData] | WaterfallDataCollection]: """Collection of data that represents the series. Defaults to :obj:`None <python:None>`. While the series type returns a collection of :class:`WaterfallData` instances, it accepts as input three different types of data: .. tabs:: .. tab:: 1D Collection .. code-block:: series = WaterfallSeries() series.data = [0, 5, 3, 5] A one-dimensional collection of numerical values. Each member of the collection will be interpreted as a ``y``-value, with its corresponding ``x`` value automatically determined. If :meth:`WaterfallSeries.point_start` is :obj:`None <python:None>`, ``x`` values will begin at ``0``. Otherwise, they will start at ``point_start``. If :meth:`WaterfallSeries.point_interval` is :obj:`None <python:None>`, ``x`` values will be incremented by ``1``. Otherwise, they will be incremented by the value of ``point_interval``. .. tab:: 2D Collection .. code-block:: series = WaterfallSeries() # Category X-axis series.data = [ ['Category A', 0], ['Category B', 5], ['Category C', 3], ['Category D', 5] ] # Numerical X-axis series.data = [ [9, 0], [1, 5], [2, 3], [7, 5] ] A two-dimensional collection of values. Each member of the collection will be interpreted as an ``x`` and ``y`` pair. The ``x`` value can be a :class:`str <python:str>`, :class:`date <python:datetime.date>`, :class:`datetime <python:datetime.datetime>`, or numeric value. .. note:: If the ``x`` value is a :class:`str <python:str>`, it will be interpreted as the name of the data point. .. tab:: Object Collection A one-dimensional collection of :class:`WaterfallData` objects. :rtype: :class:`list <python:list>` of :class:`WaterfallData` or :class:`WaterfallDataCollection` or :obj:`None <python:None>` """ return self._data @data.setter def data(self, value): if not is_ndarray(value) and not value: self._data = None else: self._data = WaterfallData.from_array(value) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'accessibility': as_dict.get('accessibility', None), 'allow_point_select': as_dict.get('allowPointSelect', None), 'animation': as_dict.get('animation', None), 'class_name': as_dict.get('className', None), 'clip': as_dict.get('clip', None), 'color': as_dict.get('color', None), 'cursor': as_dict.get('cursor', None), 'custom': as_dict.get('custom', None), 'dash_style': as_dict.get('dashStyle', None), 'data_labels': as_dict.get('dataLabels', None), 'description': as_dict.get('description', None), 'enable_mouse_tracking': as_dict.get('enableMouseTracking', None), 'events': as_dict.get('events', None), 'include_in_data_export': as_dict.get('includeInDataExport', None), 'keys': as_dict.get('keys', None), 'label': as_dict.get('label', None), 'legend_symbol': as_dict.get('legendSymbol', None), 'linked_to': as_dict.get('linkedTo', None), 'marker': as_dict.get('marker', None), 'on_point': as_dict.get('onPoint', None), 'opacity': as_dict.get('opacity', None), 'point': as_dict.get('point', None), 'point_description_formatter': as_dict.get('pointDescriptionFormatter', None), 'selected': as_dict.get('selected', None), 'show_checkbox': as_dict.get('showCheckbox', None), 'show_in_legend': as_dict.get('showInLegend', None), 'skip_keyboard_navigation': as_dict.get('skipKeyboardNavigation', None), 'sonification': as_dict.get('sonification', None), 'states': as_dict.get('states', None), 'sticky_tracking': as_dict.get('stickyTracking', None), 'threshold': as_dict.get('threshold', None), 'tooltip': as_dict.get('tooltip', None), 'turbo_threshold': as_dict.get('turboThreshold', None), 'visible': as_dict.get('visible', None), 'animation_limit': as_dict.get('animationLimit', None), 'boost_blending': as_dict.get('boostBlending', None), 'boost_threshold': as_dict.get('boostThreshold', None), 'color_axis': as_dict.get('colorAxis', None), 'color_index': as_dict.get('colorIndex', None), 'color_key': as_dict.get('colorKey', None), 'connect_ends': as_dict.get('connectEnds', None), 'connect_nulls': as_dict.get('connectNulls', None), 'crisp': as_dict.get('crisp', None), 'crop_threshold': as_dict.get('cropThreshold', None), 'data_sorting': as_dict.get('dataSorting', None), 'drag_drop': as_dict.get('dragDrop', None), 'fill_color': as_dict.get('fillColor', None), 'fill_opacity': as_dict.get('fillOpacity', None), 'find_nearest_point_by': as_dict.get('findNearestPointBy', None), 'get_extremes_from_all': as_dict.get('getExtremesFromAll', None), 'inactive_other_points': as_dict.get('inactiveOtherPoints', None), 'linecap': as_dict.get('linecap', None), 'line_color': as_dict.get('lineColor', None), 'line_width': as_dict.get('lineWidth', None), 'negative_color': as_dict.get('negativeColor', None), 'negative_fill_color': as_dict.get('negativeFillColor', None), 'point_interval': as_dict.get('pointInterval', None), 'point_interval_unit': as_dict.get('pointIntervalUnit', None), 'point_placement': as_dict.get('pointPlacement', None), 'point_start': as_dict.get('pointStart', None), 'relative_x_value': as_dict.get('relativeXValue', None), 'shadow': as_dict.get('shadow', None), 'soft_threshold': as_dict.get('softThreshold', None), 'stacking': as_dict.get('stacking', None), 'step': as_dict.get('step', None), 'track_by_area': as_dict.get('trackByArea', None), 'zone_axis': as_dict.get('zoneAxis', None), 'zones': as_dict.get('zones', None), 'border_color': as_dict.get('borderColor', None), 'border_radius': as_dict.get('borderRadius', None), 'border_width': as_dict.get('borderWidth', None), 'center_in_category': as_dict.get('centerInCategory', None), 'color_by_point': as_dict.get('colorByPoint', None), 'colors': as_dict.get('colors', None), 'grouping': as_dict.get('grouping', None), 'group_padding': as_dict.get('groupPadding', None), 'max_point_width': as_dict.get('maxPointWidth', None), 'min_point_length': as_dict.get('minPointLength', None), 'point_padding': as_dict.get('pointPadding', None), 'point_range': as_dict.get('pointRange', None), 'point_width': as_dict.get('pointWidth', None), 'depth': as_dict.get('depth', None), 'edge_color': as_dict.get('edgeColor', None), 'edge_width': as_dict.get('edgeWidth', None), 'group_z_padding': as_dict.get('groupZPadding', None), 'up_color': as_dict.get('upColor', None), 'data': as_dict.get('data', None), 'id': as_dict.get('id', None), 'index': as_dict.get('index', None), 'legend_index': as_dict.get('legendIndex', None), 'name': as_dict.get('name', None), 'stack': as_dict.get('stack', None), 'x_axis': as_dict.get('xAxis', None), 'y_axis': as_dict.get('yAxis', None), 'z_index': as_dict.get('zIndex', None), } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = mro__to_untrimmed_dict(self, in_cls = in_cls) return untrimmed
[docs]class WindBarbSeries(BarSeries, WindBarbOptions): """Options to apply to a Wind Barb series. Wind barbs are a convenient way to represent wind speed and direction in one graphical form. Wind direction is given by the stem direction, and wind speed by the number and shape of barbs. .. figure:: ../../../_static/windbarb-example.png :alt: Wind Barb Example Chart :align: center """ def __init__(self, **kwargs): super().__init__(**kwargs) @classmethod def _data_collection_class(cls): """Returns the class object used for the data collection. :rtype: :class:`DataPointCollection <highcharts_core.options.series.data.collections.DataPointCollection>` descendent """ return WindBarbDataCollection @classmethod def _data_point_class(cls): """Returns the class object used for individual data points. :rtype: :class:`DataBase <highcharts_core.options.series.data.base.DataBase>` descendent """ return WindBarbData @property def data(self) -> Optional[List[WindBarbData] | WindBarbDataCollection]: """Collection of data that represents the series. Defaults to :obj:`None <python:None>`. While the series type returns a collection of :class:`WindBarbData` instances, it accepts as input three different types of data: .. tabs:: .. tab:: 3D Collection .. code-block:: series = WindBarbSeries() series.data = [ ['2022-01-01T00:00:00', 3.3, 90], ['2022-01-01T01:00:00', 12.1, 180], ['2022-01-01T02:00:00', 11.1, 270] ] A three-dimensional collection of numerical values, where the dimensions correspond to the :meth:`x <WindBarbData.x>`, :meth:`value <WindBarbData.value>`, and :meth:`direction <WindBarbData.direction>` values, respectively. .. warning:: This structure assumes the chart is primarily intended to provide windspeed data, and does not feature a separate ``y`` value (``y`` will default to :obj:`None <python:None>`). .. note:: The ``x`` value can be a :class:`str <python:str>`, :class:`date <python:datetime.date>`, :class:`datetime <python:datetime.datetime>`, or numeric value. .. tab:: 4D Collection .. code-block:: series = WindBarbSeries() series.data = [ ['2022-01-01T00:00:00', 3.3, 90, 123], ['2022-01-01T01:00:00', 12.1, 180, 456], ['2022-01-01T02:00:00', 11.1, 270, 789] ] A four-dimensional collection of values, , where the dimensions correspond to the :meth:`x <WindBarbData.x>`, :meth:`value <WindBarbData.value>`, :meth:`direction <WindBarbData.direction>`, and :meth:`y <WindBarbData.y>` values, respectively. .. note:: The ``x`` value can be a :class:`str <python:str>`, :class:`date <python:datetime.date>`, :class:`datetime <python:datetime.datetime>`, or numeric value. .. tab:: Object Collection A one-dimensional collection of :class:`WindBarbData` objects. :rtype: :class:`list <python:list>` of :class:`WindBarbData` or :class:`WindBarbDataCollection` or :obj:`None <python:None>` """ return self._data @data.setter def data(self, value): if not is_ndarray(value) and not value: self._data = None else: self._data = WindBarbData.from_array(value) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'accessibility': as_dict.get('accessibility', None), 'allow_point_select': as_dict.get('allowPointSelect', None), 'animation': as_dict.get('animation', None), 'class_name': as_dict.get('className', None), 'clip': as_dict.get('clip', None), 'color': as_dict.get('color', None), 'cursor': as_dict.get('cursor', None), 'custom': as_dict.get('custom', None), 'dash_style': as_dict.get('dashStyle', None), 'data_labels': as_dict.get('dataLabels', None), 'description': as_dict.get('description', None), 'enable_mouse_tracking': as_dict.get('enableMouseTracking', None), 'events': as_dict.get('events', None), 'include_in_data_export': as_dict.get('includeInDataExport', None), 'keys': as_dict.get('keys', None), 'label': as_dict.get('label', None), 'legend_symbol': as_dict.get('legendSymbol', None), 'linked_to': as_dict.get('linkedTo', None), 'marker': as_dict.get('marker', None), 'on_point': as_dict.get('onPoint', None), 'opacity': as_dict.get('opacity', None), 'point': as_dict.get('point', None), 'point_description_formatter': as_dict.get('pointDescriptionFormatter', None), 'selected': as_dict.get('selected', None), 'show_checkbox': as_dict.get('showCheckbox', None), 'show_in_legend': as_dict.get('showInLegend', None), 'skip_keyboard_navigation': as_dict.get('skipKeyboardNavigation', None), 'sonification': as_dict.get('sonification', None), 'states': as_dict.get('states', None), 'sticky_tracking': as_dict.get('stickyTracking', None), 'threshold': as_dict.get('threshold', None), 'tooltip': as_dict.get('tooltip', None), 'turbo_threshold': as_dict.get('turboThreshold', None), 'visible': as_dict.get('visible', None), 'animation_limit': as_dict.get('animationLimit', None), 'boost_blending': as_dict.get('boostBlending', None), 'boost_threshold': as_dict.get('boostThreshold', None), 'color_axis': as_dict.get('colorAxis', None), 'color_index': as_dict.get('colorIndex', None), 'color_key': as_dict.get('colorKey', None), 'connect_ends': as_dict.get('connectEnds', None), 'connect_nulls': as_dict.get('connectNulls', None), 'crisp': as_dict.get('crisp', None), 'crop_threshold': as_dict.get('cropThreshold', None), 'data_sorting': as_dict.get('dataSorting', None), 'drag_drop': as_dict.get('dragDrop', None), 'find_nearest_point_by': as_dict.get('findNearestPointBy', None), 'get_extremes_from_all': as_dict.get('getExtremesFromAll', None), 'inactive_other_points': as_dict.get('inactiveOtherPoints', None), 'linecap': as_dict.get('linecap', None), 'line_width': as_dict.get('lineWidth', None), 'negative_color': as_dict.get('negativeColor', None), 'point_description_format': as_dict.get('pointDescriptionFormat', None), 'point_interval': as_dict.get('pointInterval', None), 'point_interval_unit': as_dict.get('pointIntervalUnit', None), 'point_placement': as_dict.get('pointPlacement', None), 'point_start': as_dict.get('pointStart', None), 'relative_x_value': as_dict.get('relativeXValue', None), 'shadow': as_dict.get('shadow', None), 'soft_threshold': as_dict.get('softThreshold', None), 'stacking': as_dict.get('stacking', None), 'step': as_dict.get('step', None), 'zone_axis': as_dict.get('zoneAxis', None), 'zones': as_dict.get('zones', None), 'border_color': as_dict.get('borderColor', None), 'border_radius': as_dict.get('borderRadius', None), 'border_width': as_dict.get('borderWidth', None), 'center_in_category': as_dict.get('centerInCategory', None), 'color_by_point': as_dict.get('colorByPoint', None), 'colors': as_dict.get('colors', None), 'grouping': as_dict.get('grouping', None), 'group_padding': as_dict.get('groupPadding', None), 'max_point_width': as_dict.get('maxPointWidth', None), 'min_point_length': as_dict.get('minPointLength', None), 'point_padding': as_dict.get('pointPadding', None), 'point_range': as_dict.get('pointRange', None), 'point_width': as_dict.get('pointWidth', None), 'depth': as_dict.get('depth', None), 'edge_color': as_dict.get('edgeColor', None), 'edge_width': as_dict.get('edgeWidth', None), 'group_z_padding': as_dict.get('groupZPadding', None), 'data_grouping': as_dict.get('dataGrouping', None), 'on_series': as_dict.get('onSeries', None), 'vector_length': as_dict.get('vectorLength', None), 'x_offset': as_dict.get('xOffset', None), 'y_offset': as_dict.get('yOffset', None), 'data': as_dict.get('data', None), 'id': as_dict.get('id', None), 'index': as_dict.get('index', None), 'legend_index': as_dict.get('legendIndex', None), 'name': as_dict.get('name', None), 'stack': as_dict.get('stack', None), 'x_axis': as_dict.get('xAxis', None), 'y_axis': as_dict.get('yAxis', None), 'z_index': as_dict.get('zIndex', None), } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = mro__to_untrimmed_dict(self, in_cls = in_cls) return untrimmed
[docs]class XRangeSeries(BaseBarSeries, XRangeOptions): """Options to apply to an X-Range series. The X-range series displays ranges on the X axis, typically time intervals with a start and end date. .. tabs:: .. tab:: Standard X-Range .. figure:: ../../../_static/xrange-example.png :alt: X-Range Example Chart :align: center .. tab:: Inverted X-Range .. figure:: ../../../_static/xrange-example-inverted.png :alt: Inverted X-Range Example Chart :align: center """ def __init__(self, **kwargs): super().__init__(**kwargs) @classmethod def _data_collection_class(cls): """Returns the class object used for the data collection. :rtype: :class:`DataPointCollection <highcharts_core.options.series.data.collections.DataPointCollection>` descendent """ return XRangeData @classmethod def _data_point_class(cls): """Returns the class object used for individual data points. :rtype: :class:`DataBase <highcharts_core.options.series.data.base.DataBase>` descendent """ return XRangeDataCollection @property def data(self) -> Optional[List[XRangeData] | XRangeDataCollection]: """Collection of data that represents the series. Defaults to :obj:`None <python:None>`. While the series type returns a collection of :class:`XRangeData` instances, it accepts as input an iterable of :class:`XRangeData` instances or :class:`dict <python:dict>` instances that can be coerced to :class:`XRangeData`. :rtype: :class:`list <python:list>` of :class:`XRangeData` or :class:`XRangeDataCollection` or :obj:`None <python:None>` """ return self._data @data.setter def data(self, value): if not is_ndarray(value) and not value: self._data = None else: self._data = XRangeData.from_array(value) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'accessibility': as_dict.get('accessibility', None), 'allow_point_select': as_dict.get('allowPointSelect', None), 'animation': as_dict.get('animation', None), 'class_name': as_dict.get('className', None), 'clip': as_dict.get('clip', None), 'color': as_dict.get('color', None), 'cursor': as_dict.get('cursor', None), 'custom': as_dict.get('custom', None), 'dash_style': as_dict.get('dashStyle', None), 'data_labels': as_dict.get('dataLabels', None), 'description': as_dict.get('description', None), 'enable_mouse_tracking': as_dict.get('enableMouseTracking', None), 'events': as_dict.get('events', None), 'include_in_data_export': as_dict.get('includeInDataExport', None), 'keys': as_dict.get('keys', None), 'label': as_dict.get('label', None), 'legend_symbol': as_dict.get('legendSymbol', None), 'linked_to': as_dict.get('linkedTo', None), 'marker': as_dict.get('marker', None), 'on_point': as_dict.get('onPoint', None), 'opacity': as_dict.get('opacity', None), 'point': as_dict.get('point', None), 'point_description_formatter': as_dict.get('pointDescriptionFormatter', None), 'selected': as_dict.get('selected', None), 'show_checkbox': as_dict.get('showCheckbox', None), 'show_in_legend': as_dict.get('showInLegend', None), 'skip_keyboard_navigation': as_dict.get('skipKeyboardNavigation', None), 'sonification': as_dict.get('sonification', None), 'states': as_dict.get('states', None), 'sticky_tracking': as_dict.get('stickyTracking', None), 'threshold': as_dict.get('threshold', None), 'tooltip': as_dict.get('tooltip', None), 'turbo_threshold': as_dict.get('turboThreshold', None), 'visible': as_dict.get('visible', None), 'animation_limit': as_dict.get('animationLimit', None), 'boost_blending': as_dict.get('boostBlending', None), 'boost_threshold': as_dict.get('boostThreshold', None), 'color_axis': as_dict.get('colorAxis', None), 'color_index': as_dict.get('colorIndex', None), 'color_key': as_dict.get('colorKey', None), 'connect_ends': as_dict.get('connectEnds', None), 'connect_nulls': as_dict.get('connectNulls', None), 'crisp': as_dict.get('crisp', None), 'crop_threshold': as_dict.get('cropThreshold', None), 'data_sorting': as_dict.get('dataSorting', None), 'drag_drop': as_dict.get('dragDrop', None), 'fill_color': as_dict.get('fillColor', None), 'fill_opacity': as_dict.get('fillOpacity', None), 'find_nearest_point_by': as_dict.get('findNearestPointBy', None), 'get_extremes_from_all': as_dict.get('getExtremesFromAll', None), 'inactive_other_points': as_dict.get('inactiveOtherPoints', None), 'linecap': as_dict.get('linecap', None), 'line_color': as_dict.get('lineColor', None), 'line_width': as_dict.get('lineWidth', None), 'negative_color': as_dict.get('negativeColor', None), 'negative_fill_color': as_dict.get('negativeFillColor', None), 'point_interval': as_dict.get('pointInterval', None), 'point_interval_unit': as_dict.get('pointIntervalUnit', None), 'point_placement': as_dict.get('pointPlacement', None), 'point_start': as_dict.get('pointStart', None), 'relative_x_value': as_dict.get('relativeXValue', None), 'shadow': as_dict.get('shadow', None), 'soft_threshold': as_dict.get('softThreshold', None), 'stacking': as_dict.get('stacking', None), 'step': as_dict.get('step', None), 'track_by_area': as_dict.get('trackByArea', None), 'zone_axis': as_dict.get('zoneAxis', None), 'zones': as_dict.get('zones', None), 'border_color': as_dict.get('borderColor', None), 'border_radius': as_dict.get('borderRadius', None), 'border_width': as_dict.get('borderWidth', None), 'center_in_category': as_dict.get('centerInCategory', None), 'color_by_point': as_dict.get('colorByPoint', None), 'colors': as_dict.get('colors', None), 'grouping': as_dict.get('grouping', None), 'group_padding': as_dict.get('groupPadding', None), 'max_point_width': as_dict.get('maxPointWidth', None), 'min_point_length': as_dict.get('minPointLength', None), 'point_padding': as_dict.get('pointPadding', None), 'point_range': as_dict.get('pointRange', None), 'point_width': as_dict.get('pointWidth', None), 'group_z_padding': as_dict.get('groupZPadding', None), 'partial_fill': as_dict.get('partialFill', None), 'data': as_dict.get('data', None), 'id': as_dict.get('id', None), 'index': as_dict.get('index', None), 'legend_index': as_dict.get('legendIndex', None), 'name': as_dict.get('name', None), 'stack': as_dict.get('stack', None), 'x_axis': as_dict.get('xAxis', None), 'y_axis': as_dict.get('yAxis', None), 'z_index': as_dict.get('zIndex', None), } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = mro__to_untrimmed_dict(self, in_cls = in_cls) return untrimmed