Source code for highcharts_maps.options.series.flowmap

from typing import Optional, List

from highcharts_maps.decorators import class_sensitive
from highcharts_maps.options.plot_options.flowmap import FlowmapOptions, GeoHeatmapOptions
from highcharts_maps.options.series.base import SeriesBase
from highcharts_maps.options.series.data.connections import FlowmapData, FlowmapDataCollection
from highcharts_maps.options.series.data.geometric import GeometricLatLonData
from highcharts_maps.utility_functions import mro__to_untrimmed_dict, is_ndarray


[docs]class FlowmapSeries(SeriesBase, FlowmapOptions): """A :term:`flowmap` series is a series laid out on top of a map series that displays route paths (e.g. flight or naval routes), or directional flows on a map. It creates a link between two points on a map chart. .. figure:: ../../../_static/flowmap-example.png :alt: Flowmap Example chart :align: center """ def __init__(self, **kwargs): super().__init__(**kwargs) @property def data(self) -> Optional[List[FlowmapData] | FlowmapDataCollection]: """Collection of data that represents the series. Defaults to :obj:`None <python:None>`. While the series type returns a collection of :class:`FlowmapData` instances, it accepts as input three different types of data: .. tabs:: .. tab:: 3D Collection .. code-block:: my_series = FlowmapSeries() my_series.data = ['Point 1', 'Point 2', 4] A three-dimensional collection of values, where the first member corresponds to the origin point, the second member corresponds to the destination point, and the third member represents the weight given to the connection. .. tab:: Object Collection A one-dimensional collection of :class:`FlowmapData <highcharts_maps.options.series.data.connections.FlowmapData>` objects. :rtype: :class:`list <python:list>` of :class:`FlowmapData <highcharts_maps.options.series.data.connections.FlowmapData>` or :class:`FlowmapDataCollection` 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 = FlowmapData.from_array(value) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'accessibility': as_dict.get('accessibility', 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), '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), 'color_axis': as_dict.get('colorAxis', None), 'color_by_point': as_dict.get('colorByPoint', None), 'color_index': as_dict.get('colorIndex', None), 'color_key': as_dict.get('colorKey', None), 'colors': as_dict.get('colors', None), 'curve_factor': as_dict.get('curveFactor', None), 'fill_color': as_dict.get('fillColor', None), 'fill_opacity': as_dict.get('fillOpacity', None), 'find_nearest_point_by': as_dict.get('findNearestPointBy', None), 'line_width': as_dict.get('lineWidth', None), 'marker_end': as_dict.get('markerEnd', None), 'max_width': as_dict.get('maxWidth', None), 'min_width': as_dict.get('minWidth', None), 'null_color': as_dict.get('nullColor', None), 'null_interaction': as_dict.get('nullInteraction', None), 'weight': as_dict.get('weight', None), 'width': as_dict.get('width', None), 'z_index': as_dict.get('zIndex', 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), } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = mro__to_untrimmed_dict(self, in_cls = in_cls) return untrimmed @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 FlowmapDataCollection @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 FlowmapData
[docs]class GeoHeatmapSeries(FlowmapSeries, GeoHeatmapOptions): """A :term:`geoheatmap` series is a variety of heatmap series, composed into the map projection, where the units are expressed in latitude and longitude, while individual values contained in a matrix are represented as colors. .. warning:: GeoHeatmaps require that ``modules/geoheatmap`` is loaded client-side. .. figure:: ../../../_static/geoheatmap-example.png :alt: GeoHeatmap Example Chart :align: center """ def __init__(self, **kwargs): super().__init__(**kwargs) @property def data(self) -> Optional[List[GeometricLatLonData]]: """Collection of data that represents the series. Defaults to :obj:`None <python:None>`. While the series type returns a collection of :class:`GeometricLatLonData` instances, it accepts as input the following types of data: .. tabs:: .. tab:: Object Collection A one-dimensional collection of :class:`GeometricLatLonData <highcharts_maps.options.series.data.geometric.GeometricLatLonData>` objects. :rtype: :class:`list <python:list>` of :class:`GeometricLatLonData <highcharts_maps.options.series.data.geometric.GeometricLatLonData>` or :obj:`None <python:None>` """ return self._data @data.setter @class_sensitive(GeometricLatLonData, force_iterable = True) def data(self, value): self._data = value @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'accessibility': as_dict.get('accessibility', 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), '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), 'color_axis': as_dict.get('colorAxis', None), 'color_by_point': as_dict.get('colorByPoint', None), 'color_index': as_dict.get('colorIndex', None), 'color_key': as_dict.get('colorKey', None), 'colors': as_dict.get('colors', None), 'curve_factor': as_dict.get('curveFactor', None), 'fill_color': as_dict.get('fillColor', None), 'fill_opacity': as_dict.get('fillOpacity', None), 'find_nearest_point_by': as_dict.get('findNearestPointBy', None), 'line_width': as_dict.get('lineWidth', None), 'marker_end': as_dict.get('markerEnd', None), 'max_width': as_dict.get('maxWidth', None), 'min_width': as_dict.get('minWidth', None), 'null_color': as_dict.get('nullColor', None), 'null_interaction': as_dict.get('nullInteraction', None), 'weight': as_dict.get('weight', None), 'width': as_dict.get('width', None), 'z_index': as_dict.get('zIndex', 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), 'affects_map_view': as_dict.get('affectsMapView', None), 'border_color': as_dict.get('borderColor', None), 'border_width': as_dict.get('borderWidth', None), 'colsize': as_dict.get('colsize', None), 'interpolation': as_dict.get('interpolation', None), 'rowsize': as_dict.get('rowsize', None), } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = mro__to_untrimmed_dict(self, in_cls = in_cls) return untrimmed