.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
boostanddraggable-pointsmodules.Note
The marker clusters feature requires the
marker-clusters.jsfile 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
otherinstance.- 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 inotherthat are already set will be overwritten by their counterparts inself. Defaults toTrue.kwargs – Additional keyword arguments. Some special descendents of
HighchartsMetamay have special implementations of this method which rely on additional keyword arguments.
- Returns:
A mutated version of
otherwith new property values
- classmethod from_dict(as_dict: dict, allow_snake_case: bool = True)
Construct an instance of the class from a
dictobject.
- 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 astror as a filename which contains the JS object literal.allow_snake_case (
bool) – IfTrue, interpretssnake_casekeys as equivalent tocamelCasekeys. 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_casekeys as equivalent tocamelCasekeys. Defaults toTrue.
- Returns:
A Python objcet representation of
as_json.- Return type:
HighchartsMeta
- to_dict() dict
Generate a
dictrepresentation of the object compatible with the Highcharts JavaScript library.Note
The
dictrepresentation 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
strcontaining 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
stror abytesobject depending on the JSON serialization library you are using. For example, if your environment has orjson, the result will be abytesrepresentation 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
untrimmedwhose values areNoneand convert values that have.to_dict()methods.
- static trim_iterable(untrimmed, to_json=False)
Convert any
EnforcedNullTypevalues inuntrimmedto'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.typeis set to'grid'.
- property animation: AnimationOptions | None
Options for the cluster marker animation.
- Return type:
AnimationOptionsorNone
- property data_labels: DataLabel | None
Options for the cluster data labels.
- Return type:
DataLabelorNone
- 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:
SeriesEventsorNone
- 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_colorandline_widthdefine 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:
MarkerorNone
- 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
otherinstance.- 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 inotherthat are already set will be overwritten by their counterparts inself. Defaults toTrue.kwargs – Additional keyword arguments. Some special descendents of
HighchartsMetamay have special implementations of this method which rely on additional keyword arguments.
- Returns:
A mutated version of
otherwith new property values
- classmethod from_dict(as_dict: dict, allow_snake_case: bool = True)
Construct an instance of the class from a
dictobject.
- 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 astror as a filename which contains the JS object literal.allow_snake_case (
bool) – IfTrue, interpretssnake_casekeys as equivalent tocamelCasekeys. 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_casekeys as equivalent tocamelCasekeys. Defaults toTrue.
- Returns:
A Python objcet representation of
as_json.- Return type:
HighchartsMeta
- to_dict() dict
Generate a
dictrepresentation of the object compatible with the Highcharts JavaScript library.Note
The
dictrepresentation 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
strcontaining 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
stror abytesobject depending on the JSON serialization library you are using. For example, if your environment has orjson, the result will be abytesrepresentation 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
untrimmedwhose values areNoneand convert values that have.to_dict()methods.
- static trim_iterable(untrimmed, to_json=False)
Convert any
EnforcedNullTypevalues inuntrimmedto'null'.
- property distance: str | int | float | Decimal | None
When
VectorLayoutAlgorithm.type()is set to'kmeans',distanceis 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_sizeis is a size of a grid square element. Defaults to50.The
grid_sizeis 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', theiterationsindicates 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 toNoneand 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_thresholdthe'grid'algorithm is applied. If fewer, then'kmeans'is applied.A custom clustering algorithm can be applied by setting
typeto a JavaScript callback function. This function takes an array ofprocessedXData,processedYData,processedXDataindexes, andVectorLayoutAlgorithmoptions 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.