.data_grouping
class: DataGroupingOptions
- class DataGroupingOptions(**kwargs)[source]
Data grouping configures sampling the data values into larger blocks in order to ease readability and increase performance of the JavaScript charts.
Highcharts Stock by default applies data grouping when the points become closer than the number of pixels specified by the
.group_pixel_width
setting.Note
If data grouping is applied, the grouping information of grouped points can be read (in JavaScript) from
Point.dataGroup
.Caution
In Highcharts for Python and Highcharts JS, usage of the data grouping requires the
modules/datagrouping.js
JavaScript module. In Highcharts Stock for Python, it is included by default.Caution
If point options other than the data itself are set, for example
name
,color
, or custom properties, the grouping logic will not know how to group it. In this case, the options of the first point instance are copied over to the group point. This can be altered through a customapproximation
function.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
- get_required_modules(include_extension=False) List[str]
Return the list of URLs from which the Highcharts JavaScript modules needed to render the chart can be retrieved.
- 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', careful_validation=False) str | None
Return the object represented as a
str
containing the JavaScript object literal.- Parameters:
along the way using the esprima-python library. Defaults to
False
.Warning
Setting this value to
True
will significantly degrade serialization performance, though it may prove useful for debugging purposes.
- 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, context: str = None) dict
Remove keys from
untrimmed
whose values areNone
and convert values that have.to_dict()
methods.- Parameters:
untrimmed (
dict
) – Thedict
whose values may still beNone
or Python objects.to_json (
bool
) – IfTrue
, will remove all keys fromuntrimmed
that are not serializable to JSON. Defaults toFalse
.context (
str
orNone
) – If provided, will inform the method of the context in which it is being run which may inform special handling cases (e.g. where empty strings may be important / allowable). Defaults toNone
.
- Returns:
Trimmed
dict
- Return type:
- static trim_iterable(untrimmed, to_json=False, context: str = None)
Convert any
EnforcedNullType
values inuntrimmed
to'null'
.- Parameters:
untrimmed (iterable) – The iterable whose members may still be
None
or Python objects.to_json (
bool
) – IfTrue
, will remove all members fromuntrimmed
that are not serializable to JSON. Defaults toFalse
.context (
str
orNone
) – If provided, will inform the method of the context in which it is being run which may inform special handling cases (e.g. where empty strings may be important / allowable). Defaults toNone
.
- Return type:
iterable
- property anchor: str | None
Specifies how the points should be located on the X axis inside the group. Defaults to
'start'
.Available options:
'start'
places the point at the beginning of the group (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)'middle'
places the point in the middle of the group (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)'end'
places the point at the end of the group (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)
- property approximation: str | CallbackFunction | None
The method of approximation within a group. For example, when 30 days are grouped into a one month period, this property determines what value should represent the entire group.
Accepts the following values if not using a custom function:
'average'
'averages'
'hlc'
'ohlc'
'open'
'high'
'low'
'close'
'sum'
'range'
'windbarb'
The default value will depend on the series type for which data grouping is being applied:
WindBarbSeries
will default to'windbarb'
,OHLCSeries
,Candlestick
, will default to'ohlc'
which are then calculated from the open, high, low, and close values.HLCSeries
will default to'hlc'
, which then calculate the grouped values from the high, low, and close values.For range-type series, will default to
'range'
, which then calculates grouped values from the low and high-end values.For line-type series, will default to
'average'
.For column-type series will default to
'sum'
.For all other data, will default to
'averages'
.
Custom aggregate methods can be added by assigning a callback function as the approximation. This function should take a numeric array as the argument and should return a single numeric value or (JavaScript)
null
.Note
The numeric array will never contain null values, only true numbers. Instead, if null values are present in the raw data, the numeric array will have a (JavaScript)
.hasNulls
property set totrue
.For single-value data sets the data is available in the first argument of the callback function. For OHLC data sets, all the open values are in the first argument, all high values in the second, etc.
Tip
Grouping meta data is available in the (JavaScript) approximation callback via
this.dataGroupInfo
. It can be used to extract information from the raw data.- Return type:
str
orCallbackFunction
orNone
- property date_time_label_formats: DateTimeLabelFormats | None
Datetime formats for the header of the tooltip in a stock chart. Defaults to
None
.See also
DateTimeLabelFormats
- Return type:
DateTimeLabelFormats
orNone
- property first_anchor: str | None
Specifies how the first grouped point is positioned on the xAxis. Defaults to
'start'
.If
first_anchor
and/orlast_anchor
are provided, then those options take precedence overanchor
for the first and/or last grouped points.Supported values are:
'start'
places the point at the beginning of the group (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)'middle'
places the point in the middle of the group (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)'end'
places the point at the end of the group (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)'firstPoint'
places the point at the first point in the group (e.g. points at 00:13, 00:35, 00:59 -> 00:13)'lastPoint'
places the point at the last point in the group (e.g. points at 00:13, 00:35, 00:59 -> 00:59)
- property forced: bool | None
If
True
, data grouping is applied no matter how small the intervals are. Defaults toFalse
.Hint
This can be handy for example when the sum should be calculated for values appearing at random times within each hour.
- property group_all: bool | None
If
True
, will force data grouping to calculate all grouped points for a given dataset even if not visible. IfFalse
, data grouping is calculated only for visible points. Defaults toFalse
.Note
Setting this option to
True
prevents for example a column series from calculating a grouped point only for part of the dataset. The effect is similar toSeriesOptions.get_extremes_from_all()
but does not affect yAxis extremes.
- property group_pixel_width: int | float | Decimal | None
The approximate data group width, expressed in pixels. Defaults to
30
.- Return type:
numeric or
None
- property last_anchor: str | None
Specifies how the last grouped point is positioned on the xAxis. Defaults to
'start'
.If
first_anchor
and/orlast_anchor
are provided, then those options take precedence overanchor
for the first and/or last grouped points.Supported values are:
'start'
places the point at the beginning of the group (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)'middle'
places the point in the middle of the group (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)'end'
places the point at the end of the group (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)'firstPoint'
places the point at the first point in the group (e.g. points at 00:13, 00:35, 00:59 -> 00:13)'lastPoint'
places the point at the last point in the group (e.g. points at 00:13, 00:35, 00:59 -> 00:59)
- property units: List[List[str | List[int | float | Decimal | EnforcedNullType | None]]] | None
An array determining what time intervals the data is allowed to be grouped to. Each array item is an array where the first value is the time unit expressed as a
str
and the second value is another array of allowed multiples.Defaults to
None
, which behaves as:{ 'units': [ [ 'millisecond', # unit name [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] # allowed multiples ], [ 'second', [1, 2, 5, 10, 15, 30] ], [ 'minute', [1, 2, 5, 10, 15, 30] ], [ 'hour', [1, 2, 3, 4, 6, 8, 12] ], [ 'day', [1] ], [ 'week', [1] ], [ 'month', [1, 3, 6] ], [ 'year', None ] ] }