.clusters
class: ClusterOptions
- class ClusterOptions(**kwargs)[source]
Options for marker clusters, the concept of sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts.
Warning
The marker clusters module does not work with
boost
anddraggable-points
modules.Note
The marker clusters feature requires the
marker-clusters.js
file to be loaded, found in the modules directory of the download package, or online at code.highcharts.com/modules/marker-clusters.js.Class Inheritance
- copy(other=None, overwrite=True, **kwargs)
Copy the configuration settings from this instance to the
other
instance.- Parameters:
other (
HighchartsMeta
) – The target instance to which the properties of this instance should be copied. IfNone
, will create a new instance and populate it with properties copied fromself
. Defaults toNone
.overwrite (
bool
) – ifTrue
, properties inother
that are already set will be overwritten by their counterparts inself
. Defaults toTrue
.kwargs – Additional keyword arguments. Some special descendents of
HighchartsMeta
may have special implementations of this method which rely on additional keyword arguments.
- Returns:
A mutated version of
other
with new property values
- classmethod from_dict(as_dict: dict, allow_snake_case: bool = True)
Construct an instance of the class from a
dict
object.
- classmethod from_js_literal(as_str_or_file, allow_snake_case: bool = True, _break_loop_on_failure: bool = False)
Return a Python object representation of a Highcharts JavaScript object literal.
- Parameters:
as_str_or_file (
str
) – The JavaScript object literal, represented either as astr
or as a filename which contains the JS object literal.allow_snake_case (
bool
) – IfTrue
, interpretssnake_case
keys as equivalent tocamelCase
keys. Defaults toTrue
._break_loop_on_failure (
bool
) – IfTrue
, will break any looping operations in the event of a failure. Otherwise, will attempt to repair the failure. Defaults toFalse
.
- Returns:
A Python object representation of the Highcharts JavaScript object literal.
- Return type:
HighchartsMeta
- classmethod from_json(as_json_or_file, allow_snake_case: bool = True)
Construct an instance of the class from a JSON string.
- Parameters:
as_json_or_file – The JSON string for the object or the filename of a file that contains the JSON string.
allow_snake_case (
bool
) – IfTrue
, interpretssnake_case
keys as equivalent tocamelCase
keys. Defaults toTrue
.
- Returns:
A Python objcet representation of
as_json
.- Return type:
HighchartsMeta
- to_dict() dict
Generate a
dict
representation of the object compatible with the Highcharts JavaScript library.Note
The
dict
representation has a property structure and naming convention that is intentionally consistent with the Highcharts JavaScript library. This is not Pythonic, but it makes managing the interplay between the two languages much, much simpler.
- to_js_literal(filename=None, encoding='utf-8') str | None
Return the object represented as a
str
containing the JavaScript object literal.
- to_json(filename=None, encoding='utf-8')
Generate a JSON string/byte string representation of the object compatible with the Highcharts JavaScript library.
Note
This method will either return a standard
str
or abytes
object depending on the JSON serialization library you are using. For example, if your environment has orjson, the result will be abytes
representation of the string.- Parameters:
- Returns:
A JSON representation of the object compatible with the Highcharts library.
- Return type:
- static trim_dict(untrimmed: dict, to_json: bool = False) dict
Remove keys from
untrimmed
whose values areNone
and convert values that have.to_dict()
methods.
- static trim_iterable(untrimmed, to_json=False)
Convert any
EnforcedNullType
values inuntrimmed
to'null'
.
- property allow_overlap: bool | None
If
True
, clusters are allowed to overlap. Otherwise, overlapping is prevented. Defaults toTrue
.Warning
Preventing overlapping only works if
layout_algorithm.type
is set to'grid'
.
- property animation: AnimationOptions | None
Options for the cluster marker animation.
- Return type:
AnimationOptions
orNone
- property data_labels: DataLabel | None
Options for the cluster data labels.
- Return type:
DataLabel
orNone
- property drill_to_cluster: bool | None
If
True
, zoom the plot area to the cluster points range when a cluster is clicked. Defaults toTrue
.
- property events: ClusterEvents | None
General event handlers for marker clusters.
- Return type:
SeriesEvents
orNone
- property layout_algorithm: VectorLayoutAlgorithm | None
Options for the layout algorithm to apply to the Vector chart.
- Return type:
- property marker: Marker | None
Options for the point markers of line-like series.
Properties like
fill_color
,line_color
andline_width
define the visual appearance of the markers. Other series types, like column series, don’t have markers, but have visual options on the series level instead.- Return type:
Marker
orNone
- property minimum_cluster_size: int | None
The minimum number of points to be combined into a cluster. Defaults to
2
.Note
This value has to be greater or equal to
2
.
class: VectorLayoutAlgorithm
- class VectorLayoutAlgorithm(**kwargs)[source]
Options for the layout algorithm to apply to the Vector chart.
Class Inheritance
- copy(other=None, overwrite=True, **kwargs)
Copy the configuration settings from this instance to the
other
instance.- Parameters:
other (
HighchartsMeta
) – The target instance to which the properties of this instance should be copied. IfNone
, will create a new instance and populate it with properties copied fromself
. Defaults toNone
.overwrite (
bool
) – ifTrue
, properties inother
that are already set will be overwritten by their counterparts inself
. Defaults toTrue
.kwargs – Additional keyword arguments. Some special descendents of
HighchartsMeta
may have special implementations of this method which rely on additional keyword arguments.
- Returns:
A mutated version of
other
with new property values
- classmethod from_dict(as_dict: dict, allow_snake_case: bool = True)
Construct an instance of the class from a
dict
object.
- classmethod from_js_literal(as_str_or_file, allow_snake_case: bool = True, _break_loop_on_failure: bool = False)
Return a Python object representation of a Highcharts JavaScript object literal.
- Parameters:
as_str_or_file (
str
) – The JavaScript object literal, represented either as astr
or as a filename which contains the JS object literal.allow_snake_case (
bool
) – IfTrue
, interpretssnake_case
keys as equivalent tocamelCase
keys. Defaults toTrue
._break_loop_on_failure (
bool
) – IfTrue
, will break any looping operations in the event of a failure. Otherwise, will attempt to repair the failure. Defaults toFalse
.
- Returns:
A Python object representation of the Highcharts JavaScript object literal.
- Return type:
HighchartsMeta
- classmethod from_json(as_json_or_file, allow_snake_case: bool = True)
Construct an instance of the class from a JSON string.
- Parameters:
as_json_or_file – The JSON string for the object or the filename of a file that contains the JSON string.
allow_snake_case (
bool
) – IfTrue
, interpretssnake_case
keys as equivalent tocamelCase
keys. Defaults toTrue
.
- Returns:
A Python objcet representation of
as_json
.- Return type:
HighchartsMeta
- to_dict() dict
Generate a
dict
representation of the object compatible with the Highcharts JavaScript library.Note
The
dict
representation has a property structure and naming convention that is intentionally consistent with the Highcharts JavaScript library. This is not Pythonic, but it makes managing the interplay between the two languages much, much simpler.
- to_js_literal(filename=None, encoding='utf-8') str | None
Return the object represented as a
str
containing the JavaScript object literal.
- to_json(filename=None, encoding='utf-8')
Generate a JSON string/byte string representation of the object compatible with the Highcharts JavaScript library.
Note
This method will either return a standard
str
or abytes
object depending on the JSON serialization library you are using. For example, if your environment has orjson, the result will be abytes
representation of the string.- Parameters:
- Returns:
A JSON representation of the object compatible with the Highcharts library.
- Return type:
- static trim_dict(untrimmed: dict, to_json: bool = False) dict
Remove keys from
untrimmed
whose values areNone
and convert values that have.to_dict()
methods.
- static trim_iterable(untrimmed, to_json=False)
Convert any
EnforcedNullType
values inuntrimmed
to'null'
.
- property distance: str | int | float | Decimal | None
When
VectorLayoutAlgorithm.type()
is set to'kmeans'
,distance
is a maximum distance between point and cluster center so that this point will be inside the cluster. Defaults to40
.The distance is either a number expressed in pixels or a percentage defining a percentage of the plot area width.
- property grid_size: str | int | float | Decimal | None
When
VectorLayoutAlgorithm.type()
is set to'grid'
,grid_size
is is a size of a grid square element. Defaults to50
.The
grid_size
is either a number expressed in pixels or a percentage defining a percentage of the plot area width.
- property iterations: int | None
When
VectorLayoutAlgorithm.type()
is set to'kmeans'
, theiterations
indicates the number of times that the algorithm will be repeated to find cluster positions. Defaults toNone
.
- property kmeans_threshold: int | None
When
VectorLayoutAlgorithm.type()
is set toNone
and the number of visible points is less than or equal tokmeans_threshold
, the'kmeans'
algorithm is used by default to find clusters. When the number of visible points exceeds thekmeans_threshold
, the'grid'
algorithm is used. Defaults to100
.Hint
This threshold is a powerful tool to ensure good performance on large datasets and better cluster arrangemnet after zoom.
- property type: str | None
Type of algorithm to use to combine points into a cluster. Defaults to
None
.There are three available algorithms:
'grid'
- grid-based clustering technique. Points are assigned to squares of set size depending on their position on the plot area. Points inside the grid square are combined into a cluster. The grid size can be controlled byVectorLayoutAlgorithm.grid_size()
(grid size changes at certain zoom levels).'kmeans'
- based on K-Means clustering technique. In the first step, points are divided using the grid method (applyingVectorLayoutAlgorithm.distance()
as the grid size) to find the initial amount of clusters. Next, each point is classified by computing the distance between each cluster center and that point. When the closest cluster distance is lower thanVectorLayoutAlgorithm.distance()
, the point is added to this cluster otherwise is classified as noise. The algorithm is repeated until each cluster center does not change its previous position more than one pixel. This technique is more accurate but also more time consuming than the'grid'
algorithm, especially for big datasets.'optimizedKmeans'
- based on K-Means clustering technique. This algorithm uses k-means algorithm only on the chart initialization or when chart extremes have greater range than on initialization. When a chart is redrawn the algorithm checks only clustered points distance from the cluster center and rebuilds it when the point is spaced enough to be outside the cluster. It provides a performance improvement and more stable clusters position so that it can be used rather on small and sparse datasets.
When
None
, the algorithm applied depends onVectorLayoutAlgorithm.kmeans_threshold()
such that if there are more visible points than thekmeans_threshold
the'grid'
algorithm is applied. If fewer, then'kmeans'
is applied.A custom clustering algorithm can be applied by setting
type
to a JavaScript callback function. This function takes an array ofprocessedXData
,processedYData
,processedXData
indexes, andVectorLayoutAlgorithm
options as arguments and should return an object with grouped data.A custom algorithm should return an object similar to:
{ clusterId1: [{ x: 573, y: 285, index: 1 // point index in the data array }, { x: 521, y: 197, index: 2 }], clusterId2: [{ ... }] ... }
Where
clusterId*
(in the example above - a unique id of a cluster or noise) is an array of points belonging to a cluster. If the array has only one point or fewer points than set inCluster.minimum_cluster_size
, it won’t be combined into a cluster.