Spaces:
Build error
Build error
"""Tools for creating transform & filter expressions with a python syntax.""" | |
from __future__ import annotations | |
import sys | |
from altair.expr.core import ConstExpression, FunctionExpression | |
from altair.vegalite.v5.schema.core import ExprRef as _ExprRef | |
if sys.version_info >= (3, 12): | |
from typing import override | |
else: | |
from typing_extensions import override | |
class _ConstExpressionType(type): | |
"""Metaclass providing read-only class properties for :class:`expr`.""" | |
def NaN(cls) -> ConstExpression: | |
"""Not a number (same as JavaScript literal NaN).""" | |
return ConstExpression("NaN") | |
def LN10(cls) -> ConstExpression: | |
"""The natural log of 10 (alias to Math.LN10).""" | |
return ConstExpression("LN10") | |
def E(cls) -> ConstExpression: | |
"""The transcendental number e (alias to Math.E).""" | |
return ConstExpression("E") | |
def LOG10E(cls) -> ConstExpression: | |
"""The base 10 logarithm e (alias to Math.LOG10E).""" | |
return ConstExpression("LOG10E") | |
def LOG2E(cls) -> ConstExpression: | |
"""The base 2 logarithm of e (alias to Math.LOG2E).""" | |
return ConstExpression("LOG2E") | |
def SQRT1_2(cls) -> ConstExpression: | |
"""The square root of 0.5 (alias to Math.SQRT1_2).""" | |
return ConstExpression("SQRT1_2") | |
def LN2(cls) -> ConstExpression: | |
"""The natural log of 2 (alias to Math.LN2).""" | |
return ConstExpression("LN2") | |
def SQRT2(cls) -> ConstExpression: | |
"""The square root of 2 (alias to Math.SQRT1_2).""" | |
return ConstExpression("SQRT2") | |
def PI(cls) -> ConstExpression: | |
"""The transcendental number pi (alias to Math.PI).""" | |
return ConstExpression("PI") | |
class expr(_ExprRef, metaclass=_ConstExpressionType): | |
r""" | |
Utility providing *constants* and *classmethods* to construct expressions. | |
`Expressions`_ can be used to write basic formulas that enable custom interactions. | |
Alternatively, an `inline expression`_ may be defined via :class:`expr()`. | |
Parameters | |
---------- | |
expr: str | |
A `vega expression`_ string. | |
Returns | |
------- | |
``ExprRef`` | |
.. _Expressions: | |
https://altair-viz.github.io/user_guide/interactions.html#expressions | |
.. _inline expression: | |
https://altair-viz.github.io/user_guide/interactions.html#inline-expressions | |
.. _vega expression: | |
https://vega.github.io/vega/docs/expressions/ | |
Examples | |
-------- | |
>>> import altair as alt | |
>>> bind_range = alt.binding_range(min=100, max=300, name="Slider value: ") | |
>>> param_width = alt.param(bind=bind_range, name="param_width") | |
>>> param_color = alt.param( | |
... expr=alt.expr.if_(param_width < 200, "red", "black"), | |
... name="param_color", | |
... ) | |
>>> y = alt.Y("yval").axis(titleColor=param_color) | |
>>> y | |
Y({ | |
axis: {'titleColor': Parameter('param_color', VariableParameter({ | |
expr: if((param_width < 200),'red','black'), | |
name: 'param_color' | |
}))}, | |
shorthand: 'yval' | |
}) | |
""" | |
def __new__(cls: type[_ExprRef], expr: str) -> _ExprRef: # type: ignore[misc] | |
# NOTE: `mypy<=1.10.1` is not consistent with typing spec | |
# https://github.com/python/mypy/issues/1020 | |
# https://docs.python.org/3/reference/datamodel.html#object.__new__ | |
# https://typing.readthedocs.io/en/latest/spec/constructors.html#new-method | |
return _ExprRef(expr=expr) | |
def if_(cls, *args) -> FunctionExpression: | |
""" | |
If *test* is truthy, returns *thenValue*. Otherwise, returns *elseValue*. | |
The *if* function is equivalent to the ternary operator `a ? b : c`. | |
""" | |
return FunctionExpression("if", args) | |
def isArray(cls, *args) -> FunctionExpression: | |
"""Returns true if *value* is an array, false otherwise.""" | |
return FunctionExpression("isArray", args) | |
def isBoolean(cls, *args) -> FunctionExpression: | |
"""Returns true if *value* is a boolean (`true` or `false`), false otherwise.""" | |
return FunctionExpression("isBoolean", args) | |
def isDate(cls, *args) -> FunctionExpression: | |
""" | |
Returns true if *value* is a Date object, false otherwise. | |
This method will return false for timestamp numbers or date-formatted strings; it recognizes Date objects only. | |
""" | |
return FunctionExpression("isDate", args) | |
def isDefined(cls, *args) -> FunctionExpression: | |
""" | |
Returns true if *value* is a defined value, false if *value* equals `undefined`. | |
This method will return true for `null` and `NaN` values. | |
""" | |
return FunctionExpression("isDefined", args) | |
def isNumber(cls, *args) -> FunctionExpression: | |
""" | |
Returns true if *value* is a number, false otherwise. | |
`NaN` and `Infinity` are considered numbers. | |
""" | |
return FunctionExpression("isNumber", args) | |
def isObject(cls, *args) -> FunctionExpression: | |
"""Returns true if *value* is an object (including arrays and Dates), false otherwise.""" | |
return FunctionExpression("isObject", args) | |
def isRegExp(cls, *args) -> FunctionExpression: | |
"""Returns true if *value* is a RegExp (regular expression) object, false otherwise.""" | |
return FunctionExpression("isRegExp", args) | |
def isString(cls, *args) -> FunctionExpression: | |
"""Returns true if *value* is a string, false otherwise.""" | |
return FunctionExpression("isString", args) | |
def isValid(cls, *args) -> FunctionExpression: | |
"""Returns true if *value* is not `null`, `undefined`, or `NaN`, false otherwise.""" | |
return FunctionExpression("isValid", args) | |
def toBoolean(cls, *args) -> FunctionExpression: | |
""" | |
Coerces the input *value* to a string. | |
Null values and empty strings are mapped to `null`. | |
""" | |
return FunctionExpression("toBoolean", args) | |
def toDate(cls, *args) -> FunctionExpression: | |
""" | |
Coerces the input *value* to a Date instance. | |
Null values and empty strings are mapped to `null`. | |
If an optional *parser* function is provided, it is used to perform date parsing, otherwise `Date.parse` is used. | |
Be aware that `Date.parse` has different implementations across browsers! | |
""" | |
return FunctionExpression("toDate", args) | |
def toNumber(cls, *args) -> FunctionExpression: | |
""" | |
Coerces the input *value* to a number. | |
Null values and empty strings are mapped to `null`. | |
""" | |
return FunctionExpression("toNumber", args) | |
def toString(cls, *args) -> FunctionExpression: | |
""" | |
Coerces the input *value* to a string. | |
Null values and empty strings are mapped to `null`. | |
""" | |
return FunctionExpression("toString", args) | |
def isNaN(cls, *args) -> FunctionExpression: | |
""" | |
Returns true if *value* is not a number. | |
Same as JavaScript's `isNaN`. | |
""" | |
return FunctionExpression("isNaN", args) | |
def isFinite(cls, *args) -> FunctionExpression: | |
""" | |
Returns true if *value* is a finite number. | |
Same as JavaScript's `isFinite`. | |
""" | |
return FunctionExpression("isFinite", args) | |
def abs(cls, *args) -> FunctionExpression: | |
""" | |
Returns the absolute value of *value*. | |
Same as JavaScript's `Math.abs`. | |
""" | |
return FunctionExpression("abs", args) | |
def acos(cls, *args) -> FunctionExpression: | |
""" | |
Trigonometric arccosine. | |
Same as JavaScript's `Math.acos`. | |
""" | |
return FunctionExpression("acos", args) | |
def asin(cls, *args) -> FunctionExpression: | |
""" | |
Trigonometric arcsine. | |
Same as JavaScript's `Math.asin`. | |
""" | |
return FunctionExpression("asin", args) | |
def atan(cls, *args) -> FunctionExpression: | |
""" | |
Trigonometric arctangent. | |
Same as JavaScript's `Math.atan`. | |
""" | |
return FunctionExpression("atan", args) | |
def atan2(cls, *args) -> FunctionExpression: | |
""" | |
Returns the arctangent of *dy / dx*. | |
Same as JavaScript's `Math.atan2`. | |
""" | |
return FunctionExpression("atan2", args) | |
def ceil(cls, *args) -> FunctionExpression: | |
""" | |
Rounds *value* to the nearest integer of equal or greater value. | |
Same as JavaScript's `Math.ceil`. | |
""" | |
return FunctionExpression("ceil", args) | |
def clamp(cls, *args) -> FunctionExpression: | |
"""Restricts *value* to be between the specified *min* and *max*.""" | |
return FunctionExpression("clamp", args) | |
def cos(cls, *args) -> FunctionExpression: | |
""" | |
Trigonometric cosine. | |
Same as JavaScript's `Math.cos`. | |
""" | |
return FunctionExpression("cos", args) | |
def exp(cls, *args) -> FunctionExpression: | |
""" | |
Returns the value of *e* raised to the provided *exponent*. | |
Same as JavaScript's `Math.exp`. | |
""" | |
return FunctionExpression("exp", args) | |
def floor(cls, *args) -> FunctionExpression: | |
""" | |
Rounds *value* to the nearest integer of equal or lower value. | |
Same as JavaScript's `Math.floor`. | |
""" | |
return FunctionExpression("floor", args) | |
def hypot(cls, *args) -> FunctionExpression: | |
""" | |
Returns the square root of the sum of squares of its arguments. | |
Same as JavaScript's `Math.hypot`. | |
""" | |
return FunctionExpression("hypot", args) | |
def log(cls, *args) -> FunctionExpression: | |
""" | |
Returns the natural logarithm of *value*. | |
Same as JavaScript's `Math.log`. | |
""" | |
return FunctionExpression("log", args) | |
def max(cls, *args) -> FunctionExpression: | |
""" | |
Returns the maximum argument value. | |
Same as JavaScript's `Math.max`. | |
""" | |
return FunctionExpression("max", args) | |
def min(cls, *args) -> FunctionExpression: | |
""" | |
Returns the minimum argument value. | |
Same as JavaScript's `Math.min`. | |
""" | |
return FunctionExpression("min", args) | |
def pow(cls, *args) -> FunctionExpression: | |
""" | |
Returns *value* raised to the given *exponent*. | |
Same as JavaScript's `Math.pow`. | |
""" | |
return FunctionExpression("pow", args) | |
def random(cls, *args) -> FunctionExpression: | |
""" | |
Returns a pseudo-random number in the range `[0, 1]`. | |
Same as JavaScript's `Math.random`. | |
""" | |
return FunctionExpression("random", args) | |
def round(cls, *args) -> FunctionExpression: | |
""" | |
Rounds *value* to the nearest integer. | |
Same as JavaScript's `Math.round`. | |
""" | |
return FunctionExpression("round", args) | |
def sin(cls, *args) -> FunctionExpression: | |
""" | |
Trigonometric sine. | |
Same as JavaScript's `Math.sin`. | |
""" | |
return FunctionExpression("sin", args) | |
def sqrt(cls, *args) -> FunctionExpression: | |
""" | |
Square root function. | |
Same as JavaScript's `Math.sqrt`. | |
""" | |
return FunctionExpression("sqrt", args) | |
def tan(cls, *args) -> FunctionExpression: | |
""" | |
Trigonometric tangent. | |
Same as JavaScript's `Math.tan`. | |
""" | |
return FunctionExpression("tan", args) | |
def sampleNormal(cls, *args) -> FunctionExpression: | |
""" | |
Returns a sample from a univariate `normal (Gaussian) probability distribution <https://en.wikipedia.org/wiki/Normal_distribution>`__ with specified *mean* and standard deviation *stdev*. | |
If unspecified, the mean defaults to `0` and the standard deviation defaults to `1`. | |
""" | |
return FunctionExpression("sampleNormal", args) | |
def cumulativeNormal(cls, *args) -> FunctionExpression: | |
""" | |
Returns the value of the `cumulative distribution function <https://en.wikipedia.org/wiki/Cumulative_distribution_function>`__ at the given input domain *value* for a normal distribution with specified *mean* and standard deviation *stdev*. | |
If unspecified, the mean defaults to `0` and the standard deviation defaults to `1`. | |
""" | |
return FunctionExpression("cumulativeNormal", args) | |
def densityNormal(cls, *args) -> FunctionExpression: | |
""" | |
Returns the value of the `probability density function <https://en.wikipedia.org/wiki/Probability_density_function>`__ at the given input domain *value*, for a normal distribution with specified *mean* and standard deviation *stdev*. | |
If unspecified, the mean defaults to `0` and the standard deviation defaults to `1`. | |
""" | |
return FunctionExpression("densityNormal", args) | |
def quantileNormal(cls, *args) -> FunctionExpression: | |
""" | |
Returns the quantile value (the inverse of the `cumulative distribution function <https://en.wikipedia.org/wiki/Cumulative_distribution_function)>`__ for the given input *probability*, for a normal distribution with specified *mean* and standard deviation *stdev*. | |
If unspecified, the mean defaults to `0` and the standard deviation defaults to `1`. | |
""" | |
return FunctionExpression("quantileNormal", args) | |
def sampleLogNormal(cls, *args) -> FunctionExpression: | |
""" | |
Returns a sample from a univariate `log-normal probability distribution <https://en.wikipedia.org/wiki/Log-normal_distribution>`__ with specified log *mean* and log standard deviation *stdev*. | |
If unspecified, the log mean defaults to `0` and the log standard deviation defaults to `1`. | |
""" | |
return FunctionExpression("sampleLogNormal", args) | |
def cumulativeLogNormal(cls, *args) -> FunctionExpression: | |
""" | |
Returns the value of the `cumulative distribution function <https://en.wikipedia.org/wiki/Cumulative_distribution_function>`__ at the given input domain *value* for a log-normal distribution with specified log *mean* and log standard deviation *stdev*. | |
If unspecified, the log mean defaults to `0` and the log standard deviation defaults to `1`. | |
""" | |
return FunctionExpression("cumulativeLogNormal", args) | |
def densityLogNormal(cls, *args) -> FunctionExpression: | |
""" | |
Returns the value of the `probability density function <https://en.wikipedia.org/wiki/Probability_density_function>`__ at the given input domain *value*, for a log-normal distribution with specified log *mean* and log standard deviation *stdev*. | |
If unspecified, the log mean defaults to `0` and the log standard deviation defaults to `1`. | |
""" | |
return FunctionExpression("densityLogNormal", args) | |
def quantileLogNormal(cls, *args) -> FunctionExpression: | |
""" | |
Returns the quantile value (the inverse of the `cumulative distribution function <https://en.wikipedia.org/wiki/Cumulative_distribution_function)>`__ for the given input *probability*, for a log-normal distribution with specified log *mean* and log standard deviation *stdev*. | |
If unspecified, the log mean defaults to `0` and the log standard deviation defaults to `1`. | |
""" | |
return FunctionExpression("quantileLogNormal", args) | |
def sampleUniform(cls, *args) -> FunctionExpression: | |
""" | |
Returns a sample from a univariate `continuous uniform probability distribution <https://en.wikipedia.org/wiki/Uniform_distribution_(continuous)>`__ over the interval `[min, max]`. | |
If unspecified, *min* defaults to `0` and *max* defaults to `1`. | |
If only one argument is provided, it is interpreted as the *max* value. | |
""" | |
return FunctionExpression("sampleUniform", args) | |
def cumulativeUniform(cls, *args) -> FunctionExpression: | |
""" | |
Returns the value of the `cumulative distribution function <https://en.wikipedia.org/wiki/Cumulative_distribution_function>`__ at the given input domain *value* for a uniform distribution over the interval `[min, max]`. | |
If unspecified, *min* defaults to `0` and *max* defaults to `1`. | |
If only one argument is provided, it is interpreted as the *max* value. | |
""" | |
return FunctionExpression("cumulativeUniform", args) | |
def densityUniform(cls, *args) -> FunctionExpression: | |
""" | |
Returns the value of the `probability density function <https://en.wikipedia.org/wiki/Probability_density_function>`__ at the given input domain *value*, for a uniform distribution over the interval `[min, max]`. | |
If unspecified, *min* defaults to `0` and *max* defaults to `1`. | |
If only one argument is provided, it is interpreted as the *max* value. | |
""" | |
return FunctionExpression("densityUniform", args) | |
def quantileUniform(cls, *args) -> FunctionExpression: | |
""" | |
Returns the quantile value (the inverse of the `cumulative distribution function <https://en.wikipedia.org/wiki/Cumulative_distribution_function)>`__ for the given input *probability*, for a uniform distribution over the interval `[min, max]`. | |
If unspecified, *min* defaults to `0` and *max* defaults to `1`. | |
If only one argument is provided, it is interpreted as the *max* value. | |
""" | |
return FunctionExpression("quantileUniform", args) | |
def now(cls, *args) -> FunctionExpression: | |
"""Returns the timestamp for the current time.""" | |
return FunctionExpression("now", args) | |
def datetime(cls, *args) -> FunctionExpression: | |
""" | |
Returns a new `Date` instance. | |
The *month* is 0-based, such that `1` represents February. | |
""" | |
return FunctionExpression("datetime", args) | |
def date(cls, *args) -> FunctionExpression: | |
"""Returns the day of the month for the given *datetime* value, in local time.""" | |
return FunctionExpression("date", args) | |
def day(cls, *args) -> FunctionExpression: | |
"""Returns the day of the week for the given *datetime* value, in local time.""" | |
return FunctionExpression("day", args) | |
def dayofyear(cls, *args) -> FunctionExpression: | |
"""Returns the one-based day of the year for the given *datetime* value, in local time.""" | |
return FunctionExpression("dayofyear", args) | |
def year(cls, *args) -> FunctionExpression: | |
"""Returns the year for the given *datetime* value, in local time.""" | |
return FunctionExpression("year", args) | |
def quarter(cls, *args) -> FunctionExpression: | |
"""Returns the quarter of the year (0-3) for the given *datetime* value, in local time.""" | |
return FunctionExpression("quarter", args) | |
def month(cls, *args) -> FunctionExpression: | |
"""Returns the (zero-based) month for the given *datetime* value, in local time.""" | |
return FunctionExpression("month", args) | |
def week(cls, *args) -> FunctionExpression: | |
""" | |
Returns the week number of the year for the given *datetime*, in local time. | |
This function assumes Sunday-based weeks. | |
Days before the first Sunday of the year are considered to be in week 0, | |
the first Sunday of the year is the start of week 1, | |
the second Sunday week 2, etc. | |
""" | |
return FunctionExpression("week", args) | |
def hours(cls, *args) -> FunctionExpression: | |
"""Returns the hours component for the given *datetime* value, in local time.""" | |
return FunctionExpression("hours", args) | |
def minutes(cls, *args) -> FunctionExpression: | |
"""Returns the minutes component for the given *datetime* value, in local time.""" | |
return FunctionExpression("minutes", args) | |
def seconds(cls, *args) -> FunctionExpression: | |
"""Returns the seconds component for the given *datetime* value, in local time.""" | |
return FunctionExpression("seconds", args) | |
def milliseconds(cls, *args) -> FunctionExpression: | |
"""Returns the milliseconds component for the given *datetime* value, in local time.""" | |
return FunctionExpression("milliseconds", args) | |
def time(cls, *args) -> FunctionExpression: | |
"""Returns the epoch-based timestamp for the given *datetime* value.""" | |
return FunctionExpression("time", args) | |
def timezoneoffset(cls, *args) -> FunctionExpression: | |
"""Returns the timezone offset from the local timezone to UTC for the given *datetime* value.""" | |
return FunctionExpression("timezoneoffset", args) | |
def timeOffset(cls, *args) -> FunctionExpression: | |
""" | |
Returns a new `Date` instance that offsets the given *date* by the specified time `unit <https://vega.github.io/vega/docs/api/time/#time-units>`__ in the local timezone. | |
The optional *step* argument indicates the number of time unit steps to offset by (default 1). | |
""" | |
return FunctionExpression("timeOffset", args) | |
def timeSequence(cls, *args) -> FunctionExpression: | |
""" | |
Returns an array of `Date` instances from *start* (inclusive) to *stop* (exclusive), with each entry separated by the given time `unit <https://vega.github.io/vega/docs/api/time/#time-units>`__ in the local timezone. | |
The optional *step* argument indicates the number of time unit steps to take between each sequence entry (default 1). | |
""" | |
return FunctionExpression("timeSequence", args) | |
def utc(cls, *args) -> FunctionExpression: | |
"""Returns a timestamp for the given UTC date. The *month* is 0-based, such that `1` represents February.""" | |
return FunctionExpression("utc", args) | |
def utcdate(cls, *args) -> FunctionExpression: | |
"""Returns the day of the month for the given *datetime* value, in UTC time.""" | |
return FunctionExpression("utcdate", args) | |
def utcday(cls, *args) -> FunctionExpression: | |
"""Returns the day of the week for the given *datetime* value, in UTC time.""" | |
return FunctionExpression("utcday", args) | |
def utcdayofyear(cls, *args) -> FunctionExpression: | |
"""Returns the one-based day of the year for the given *datetime* value, in UTC time.""" | |
return FunctionExpression("utcdayofyear", args) | |
def utcyear(cls, *args) -> FunctionExpression: | |
"""Returns the year for the given *datetime* value, in UTC time.""" | |
return FunctionExpression("utcyear", args) | |
def utcquarter(cls, *args) -> FunctionExpression: | |
"""Returns the quarter of the year (0-3) for the given *datetime* value, in UTC time.""" | |
return FunctionExpression("utcquarter", args) | |
def utcmonth(cls, *args) -> FunctionExpression: | |
"""Returns the (zero-based) month for the given *datetime* value, in UTC time.""" | |
return FunctionExpression("utcmonth", args) | |
def utcweek(cls, *args) -> FunctionExpression: | |
""" | |
Returns the week number of the year for the given *datetime*, in UTC time. | |
This function assumes Sunday-based weeks. | |
Days before the first Sunday of the year are considered to be in week 0, | |
the first Sunday of the year is the start of week 1, | |
the second Sunday week 2, etc. | |
""" | |
return FunctionExpression("utcweek", args) | |
def utchours(cls, *args) -> FunctionExpression: | |
"""Returns the hours component for the given *datetime* value, in UTC time.""" | |
return FunctionExpression("utchours", args) | |
def utcminutes(cls, *args) -> FunctionExpression: | |
"""Returns the minutes component for the given *datetime* value, in UTC time.""" | |
return FunctionExpression("utcminutes", args) | |
def utcseconds(cls, *args) -> FunctionExpression: | |
"""Returns the seconds component for the given *datetime* value, in UTC time.""" | |
return FunctionExpression("utcseconds", args) | |
def utcmilliseconds(cls, *args) -> FunctionExpression: | |
"""Returns the milliseconds component for the given *datetime* value, in UTC time.""" | |
return FunctionExpression("utcmilliseconds", args) | |
def utcOffset(cls, *args) -> FunctionExpression: | |
""" | |
Returns a new `Date` instance that offsets the given *date* by the specified time `unit <https://vega.github.io/vega/docs/api/time/#time-units>`__ in UTC time. | |
The optional *step* argument indicates the number of time unit steps to offset by (default 1). | |
""" | |
return FunctionExpression("utcOffset", args) | |
def utcSequence(cls, *args) -> FunctionExpression: | |
""" | |
Returns an array of `Date` instances from *start* (inclusive) to *stop* (exclusive), with each entry separated by the given time `unit <https://vega.github.io/vega/docs/api/time/#time-units>`__ in UTC time. | |
The optional *step* argument indicates the number of time unit steps to take between each sequence entry (default 1). | |
""" | |
return FunctionExpression("utcSequence", args) | |
def extent(cls, *args) -> FunctionExpression: | |
"""Returns a new `[min, max]` array with the minimum and maximum values of the input array, ignoring `null`, `undefined`, and `NaN` values.""" | |
return FunctionExpression("extent", args) | |
def clampRange(cls, *args) -> FunctionExpression: | |
""" | |
Clamps a two-element *range* array in a span-preserving manner. | |
If the span of the input *range* is less than `(max - min)` and an endpoint exceeds either the *min* or *max* value, | |
the range is translated such that the span is preserved and one endpoint touches the boundary of the `[min, max]` range. | |
If the span exceeds `(max - min)`, the range `[min, max]` is returned. | |
""" | |
return FunctionExpression("clampRange", args) | |
def indexof(cls, *args) -> FunctionExpression: | |
"""Returns the first index of *value* in the input *array*, or the first index of *substring* in the input *string*.""" | |
return FunctionExpression("indexof", args) | |
def inrange(cls, *args) -> FunctionExpression: | |
"""Tests whether *value* lies within (or is equal to either) the first and last values of the *range* array.""" | |
return FunctionExpression("inrange", args) | |
def join(cls, *args) -> FunctionExpression: | |
"""Returns a new string by concatenating all of the elements of the input *array*, separated by commas or a specified *separator* string.""" | |
return FunctionExpression("join", args) | |
def lastindexof(cls, *args) -> FunctionExpression: | |
"""Returns the last index of *value* in the input *array*, or the last index of *substring* in the input *string*.""" | |
return FunctionExpression("lastindexof", args) | |
def length(cls, *args) -> FunctionExpression: | |
"""Returns the length of the input *array*, or the length of the input *string*.""" | |
return FunctionExpression("length", args) | |
def lerp(cls, *args) -> FunctionExpression: | |
""" | |
Returns the linearly interpolated value between the first and last entries in the *array* for the provided interpolation *fraction* (typically between 0 and 1). | |
For example, `lerp([0, 50], 0.5)` returns 25. | |
""" | |
return FunctionExpression("lerp", args) | |
def peek(cls, *args) -> FunctionExpression: | |
""" | |
Returns the last element in the input *array*. | |
Similar to the built-in `Array.pop` method, except that it does not remove the last element. | |
This method is a convenient shorthand for `array[array.length - 1]`. | |
""" | |
return FunctionExpression("peek", args) | |
def pluck(cls, *args) -> FunctionExpression: | |
""" | |
Retrieves the value for the specified *field* from a given *array* of objects. | |
The input *field* string may include nested properties (e.g., `foo.bar.bz`). | |
""" | |
return FunctionExpression("pluck", args) | |
def reverse(cls, *args) -> FunctionExpression: | |
""" | |
Returns a new array with elements in a reverse order of the input *array*. | |
The first array element becomes the last, and the last array element becomes the first. | |
""" | |
return FunctionExpression("reverse", args) | |
def sequence(cls, *args) -> FunctionExpression: | |
r""" | |
Returns an array containing an arithmetic sequence of numbers. | |
If *step* is omitted, it defaults to 1. | |
If *start* is omitted, it defaults to 0. | |
The *stop* value is exclusive; it is not included in the result. | |
If *step* is positive, the last element is the largest `start + i * step` less than *stop*; | |
if *step* is negative, the last element is the smallest `start + i * step` greater than *stop*. | |
If the returned array would contain an infinite number of values, an empty range is returned. | |
The arguments are not required to be integers. | |
""" | |
return FunctionExpression("sequence", args) | |
def slice(cls, *args) -> FunctionExpression: | |
""" | |
Returns a section of *array* between the *start* and *end* indices. | |
If the *end* argument is negative, it is treated as an offset from the end of the array `length(array) + end`. | |
""" | |
return FunctionExpression("slice", args) | |
def span(cls, *args) -> FunctionExpression: | |
""" | |
Returns the span of *array*: the difference between the last and first elements, or `array[array.length-1] - array[0]`. | |
Or if input is a string: a section of *string* between the *start* and *end* indices. | |
If the *end* argument is negative, it is treated as an offset from the end of the string `length(string) + end`. | |
""" | |
return FunctionExpression("span", args) | |
def lower(cls, *args) -> FunctionExpression: | |
"""Transforms *string* to lower-case letters.""" | |
return FunctionExpression("lower", args) | |
def pad(cls, *args) -> FunctionExpression: | |
""" | |
Pads a *string* value with repeated instances of a *character* up to a specified *length*. | |
If *character* is not specified, a space (' ') is used. | |
By default, padding is added to the end of a string. | |
An optional *align* parameter specifies if padding should be added to the `'left'` (beginning), `'center'`, or `'right'` (end) of the input string. | |
""" | |
return FunctionExpression("pad", args) | |
def parseFloat(cls, *args) -> FunctionExpression: | |
""" | |
Parses the input *string* to a floating-point value. | |
Same as JavaScript's `parseFloat`. | |
""" | |
return FunctionExpression("parseFloat", args) | |
def parseInt(cls, *args) -> FunctionExpression: | |
""" | |
Parses the input *string* to an integer value. | |
Same as JavaScript's `parseInt`. | |
""" | |
return FunctionExpression("parseInt", args) | |
def replace(cls, *args) -> FunctionExpression: | |
""" | |
Returns a new string with some or all matches of *pattern* replaced by a *replacement* string. | |
The *pattern* can be a string or a regular expression. | |
If *pattern* is a string, only the first instance will be replaced. | |
Same as `JavaScript's String.replace <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace>`__. | |
""" | |
return FunctionExpression("replace", args) | |
def split(cls, *args) -> FunctionExpression: | |
""" | |
Returns an array of tokens created by splitting the input *string* according to a provided *separator* pattern. | |
The result can optionally be constrained to return at most *limit* tokens. | |
""" | |
return FunctionExpression("split", args) | |
def substring(cls, *args) -> FunctionExpression: | |
"""Returns a section of *string* between the *start* and *end* indices.""" | |
return FunctionExpression("substring", args) | |
def trim(cls, *args) -> FunctionExpression: | |
"""Returns a trimmed string with preceding and trailing whitespace removed.""" | |
return FunctionExpression("trim", args) | |
def truncate(cls, *args) -> FunctionExpression: | |
r""" | |
Truncates an input *string* to a target *length*. | |
The optional *align* argument indicates what part of the string should be truncated: `'left'` (the beginning), `'center'`, or `'right'` (the end). | |
By default, the `'right'` end of the string is truncated. | |
The optional *ellipsis* argument indicates the string to use to indicate truncated content; | |
by default the ellipsis character `...` (`\\u2026`) is used. | |
""" | |
return FunctionExpression("truncate", args) | |
def upper(cls, *args) -> FunctionExpression: | |
"""Transforms *string* to upper-case letters.""" | |
return FunctionExpression("upper", args) | |
def merge(cls, *args) -> FunctionExpression: | |
""" | |
Merges the input objects *object1*, *object2*, etc into a new output object. | |
Inputs are visited in sequential order, such that key values from later arguments can overwrite those from earlier arguments. | |
Example: `merge({a:1, b:2}, {a:3}) -> {a:3, b:2}`. | |
""" | |
return FunctionExpression("merge", args) | |
def dayFormat(cls, *args) -> FunctionExpression: | |
""" | |
Formats a (0-6) *weekday* number as a full week day name, according to the current locale. | |
For example: `dayFormat(0) -> "Sunday"`. | |
""" | |
return FunctionExpression("dayFormat", args) | |
def dayAbbrevFormat(cls, *args) -> FunctionExpression: | |
""" | |
Formats a (0-6) *weekday* number as an abbreviated week day name, according to the current locale. | |
For example: `dayAbbrevFormat(0) -> "Sun"`. | |
""" | |
return FunctionExpression("dayAbbrevFormat", args) | |
def format(cls, *args) -> FunctionExpression: | |
""" | |
Formats a numeric *value* as a string. | |
The *specifier* must be a valid `d3-format specifier <https://d3js.org/d3-format/>`__ (e.g., `format(value, ',.2f')`. | |
""" | |
return FunctionExpression("format", args) | |
def monthFormat(cls, *args) -> FunctionExpression: | |
""" | |
Formats a (zero-based) *month* number as a full month name, according to the current locale. | |
For example: `monthFormat(0) -> "January"`. | |
""" | |
return FunctionExpression("monthFormat", args) | |
def monthAbbrevFormat(cls, *args) -> FunctionExpression: | |
""" | |
Formats a (zero-based) *month* number as an abbreviated month name, according to the current locale. | |
For example: `monthAbbrevFormat(0) -> "Jan"`. | |
""" | |
return FunctionExpression("monthAbbrevFormat", args) | |
def timeUnitSpecifier(cls, *args) -> FunctionExpression: | |
""" | |
Returns a time format specifier string for the given time `unit <https://vega.github.io/vega/docs/api/time/#time-units>`__. | |
The optional *specifiers* object provides a set of specifier sub-strings for customizing the format; | |
for more, see the `timeUnitSpecifier API documentation <https://vega.github.io/vega/docs/api/time/#timeUnitSpecifier>`__. | |
The resulting specifier string can then be used as input to the `timeFormat <https://vega.github.io/vega/docs/expressions/#timeFormat>`__ or | |
`utcFormat <https://vega.github.io/vega/docs/expressions/#utcFormat>`__ functions, or as the *format* parameter of an axis or legend. | |
For example: `timeFormat(date, timeUnitSpecifier('year'))` or `timeFormat(date, timeUnitSpecifier(['hours', 'minutes']))`. | |
""" | |
return FunctionExpression("timeUnitSpecifier", args) | |
def timeFormat(cls, *args) -> FunctionExpression: | |
""" | |
Formats a datetime *value* (either a `Date` object or timestamp) as a string, according to the local time. | |
The *specifier* must be a valid `d3-time-format specifier <https://d3js.org/d3-time-format/>`__. | |
For example: `timeFormat(timestamp, '%A')`. | |
""" | |
return FunctionExpression("timeFormat", args) | |
def timeParse(cls, *args) -> FunctionExpression: | |
""" | |
Parses a *string* value to a Date object, according to the local time. | |
The *specifier* must be a valid `d3-time-format specifier <https://d3js.org/d3-time-format/>`__. | |
For example: `timeParse('June 30, 2015', '%B %d, %Y')`. | |
""" | |
return FunctionExpression("timeParse", args) | |
def utcFormat(cls, *args) -> FunctionExpression: | |
""" | |
Formats a datetime *value* (either a `Date` object or timestamp) as a string, according to `UTC <https://en.wikipedia.org/wiki/Coordinated_Universal_Time>`__ time. | |
The *specifier* must be a valid `d3-time-format specifier <https://d3js.org/d3-time-format/>`__. | |
For example: `utcFormat(timestamp, '%A')`. | |
""" | |
return FunctionExpression("utcFormat", args) | |
def utcParse(cls, *args) -> FunctionExpression: | |
""" | |
Parses a *string* value to a Date object, according to `UTC <https://en.wikipedia.org/wiki/Coordinated_Universal_Time>`__ time. | |
The *specifier* must be a valid `d3-time-format specifier <https://d3js.org/d3-time-format/>`__. | |
For example: `utcParse('June 30, 2015', '%B %d, %Y')`. | |
""" | |
return FunctionExpression("utcParse", args) | |
def regexp(cls, *args) -> FunctionExpression: | |
""" | |
Creates a regular expression instance from an input *pattern* string and optional *flags*. | |
Same as `JavaScript's `RegExp` <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp>`__. | |
""" | |
return FunctionExpression("regexp", args) | |
def test(cls, *args) -> FunctionExpression: | |
r""" | |
Evaluates a regular expression *regexp* against the input *string*, returning `true` if the string matches the pattern, `false` otherwise. | |
For example: `test(\d{3}, "32-21-9483") -> true`. | |
""" | |
return FunctionExpression("test", args) | |
def rgb(cls, *args) -> FunctionExpression: | |
""" | |
Constructs a new `RGB <https://en.wikipedia.org/wiki/RGB_color_model>`__ color. | |
If *r*, *g* and *b* are specified, these represent the channel values of the returned color; an *opacity* may also be specified. | |
If a CSS Color Module Level 3 *specifier* string is specified, it is parsed and then converted to the RGB color space. Uses `d3-color's rgb function <https://d3js.org/d3-color#color_rgb>`__. | |
""" | |
return FunctionExpression("rgb", args) | |
def hsl(cls, *args) -> FunctionExpression: | |
""" | |
Constructs a new `HSL <https://en.wikipedia.org/wiki/HSL_and_HSV>`__ color. | |
If *h*, *s* and *l* are specified, these represent the channel values of the returned color; an *opacity* may also be specified. | |
If a CSS Color Module Level 3 *specifier* string is specified, it is parsed and then converted to the HSL color space. | |
Uses `d3-color's hsl function <https://d3js.org/d3-color#hsl>`__. | |
""" | |
return FunctionExpression("hsl", args) | |
def lab(cls, *args) -> FunctionExpression: | |
""" | |
Constructs a new `CIE LAB <https://en.wikipedia.org/wiki/Lab_color_space#CIELAB>`__ color. | |
If *l*, *a* and *b* are specified, these represent the channel values of the returned color; an *opacity* may also be specified. | |
If a CSS Color Module Level 3 *specifier* string is specified, it is parsed and then converted to the LAB color space. | |
Uses `d3-color's lab function <https://d3js.org/d3-color#lab>`__. | |
""" | |
return FunctionExpression("lab", args) | |
def hcl(cls, *args) -> FunctionExpression: | |
""" | |
Constructs a new `HCL <https://en.wikipedia.org/wiki/Lab_color_space#CIELAB>`__ (hue, chroma, luminance) color. | |
If *h*, *c* and *l* are specified, these represent the channel values of the returned color; an *opacity* may also be specified. | |
If a CSS Color Module Level 3 *specifier* string is specified, it is parsed and then converted to the HCL color space. | |
Uses `d3-color's hcl function <https://d3js.org/d3-color#hcl>`__. | |
""" | |
return FunctionExpression("hcl", args) | |
def luminance(cls, *args) -> FunctionExpression: | |
""" | |
Returns the luminance for the given color *specifier* (compatible with `d3-color's rgb function <https://d3js.org/d3-color#rgb)>`__. | |
The luminance is calculated according to the `W3C Web Content Accessibility Guidelines <https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef>`__. | |
""" | |
return FunctionExpression("luminance", args) | |
def contrast(cls, *args) -> FunctionExpression: | |
""" | |
Returns the contrast ratio between the input color specifiers as a float between 1 and 21. | |
The contrast is calculated according to the `W3C Web Content Accessibility Guidelines <https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef>`__. | |
""" | |
return FunctionExpression("contrast", args) | |
def item(cls, *args) -> FunctionExpression: | |
"""Returns the current scenegraph item that is the target of the event.""" | |
return FunctionExpression("item", args) | |
def group(cls, *args) -> FunctionExpression: | |
""" | |
Returns the scenegraph group mark item in which the current event has occurred. | |
If no arguments are provided, the immediate parent group is returned. | |
If a group name is provided, the matching ancestor group item is returned. | |
""" | |
return FunctionExpression("group", args) | |
def xy(cls, *args) -> FunctionExpression: | |
""" | |
Returns the x- and y-coordinates for the current event as a two-element array. | |
If no arguments are provided, the top-level coordinate space of the view is used. | |
If a scenegraph *item* (or string group name) is provided, the coordinate space of the group item is used. | |
""" | |
return FunctionExpression("xy", args) | |
def x(cls, *args) -> FunctionExpression: | |
""" | |
Returns the x coordinate for the current event. | |
If no arguments are provided, the top-level coordinate space of the view is used. | |
If a scenegraph *item* (or string group name) is provided, the coordinate space of the group item is used. | |
""" | |
return FunctionExpression("x", args) | |
def y(cls, *args) -> FunctionExpression: | |
""" | |
Returns the y coordinate for the current event. | |
If no arguments are provided, the top-level coordinate space of the view is used. | |
If a scenegraph *item* (or string group name) is provided, the coordinate space of the group item is used. | |
""" | |
return FunctionExpression("y", args) | |
def pinchDistance(cls, *args) -> FunctionExpression: | |
"""Returns the pixel distance between the first two touch points of a multi-touch event.""" | |
return FunctionExpression("pinchDistance", args) | |
def pinchAngle(cls, *args) -> FunctionExpression: | |
"""Returns the angle of the line connecting the first two touch points of a multi-touch event.""" | |
return FunctionExpression("pinchAngle", args) | |
def inScope(cls, *args) -> FunctionExpression: | |
"""Returns true if the given scenegraph *item* is a descendant of the group mark in which the event handler was defined, false otherwise.""" | |
return FunctionExpression("inScope", args) | |
def data(cls, *args) -> FunctionExpression: | |
""" | |
Returns the array of data objects for the Vega data set with the given *name*. | |
If the data set is not found, returns an empty array. | |
""" | |
return FunctionExpression("data", args) | |
def indata(cls, *args) -> FunctionExpression: | |
""" | |
Tests if the data set with a given *name* contains a datum with a *field* value that matches the input *value*. | |
For example: `indata('table', 'category', value)`. | |
""" | |
return FunctionExpression("indata", args) | |
def scale(cls, *args) -> FunctionExpression: | |
""" | |
Applies the named scale transform (or projection) to the specified *value*. | |
The optional *group* argument takes a scenegraph group mark item to indicate the specific scope in which to look up the scale or projection. | |
""" | |
return FunctionExpression("scale", args) | |
def invert(cls, *args) -> FunctionExpression: | |
""" | |
Inverts the named scale transform (or projection) for the specified *value*. | |
The optional *group* argument takes a scenegraph group mark item to indicate the specific scope in which to look up the scale or projection. | |
""" | |
return FunctionExpression("invert", args) | |
def copy(cls, *args) -> FunctionExpression: # type: ignore[override] | |
""" | |
Returns a copy (a new cloned instance) of the named scale transform of projection, or `undefined` if no scale or projection is found. | |
The optional *group* argument takes a scenegraph group mark item to indicate the specific scope in which to look up the scale or projection. | |
""" | |
# error: Signature of "copy" incompatible with supertype "SchemaBase" [override] | |
# note: def copy(self, deep: bool | Iterable[Any] = ..., ignore: list[str] | None = ...) -> expr | |
# NOTE: Not relevant as `expr() -> ExprRef` | |
# this method is only accesible via `expr.copy()` | |
return FunctionExpression("copy", args) | |
def domain(cls, *args) -> FunctionExpression: | |
""" | |
Returns the scale domain array for the named scale transform, or an empty array if the scale is not found. | |
The optional *group* argument takes a scenegraph group mark item to indicate the specific scope in which to look up the scale. | |
""" | |
return FunctionExpression("domain", args) | |
def range(cls, *args) -> FunctionExpression: | |
""" | |
Returns the scale range array for the named scale transform, or an empty array if the scale is not found. | |
The optional *group* argument takes a scenegraph group mark item to indicate the specific scope in which to look up the scale. | |
""" | |
return FunctionExpression("range", args) | |
def bandwidth(cls, *args) -> FunctionExpression: | |
""" | |
Returns the current band width for the named band scale transform, or zero if the scale is not found or is not a band scale. | |
The optional *group* argument takes a scenegraph group mark item to indicate the specific scope in which to look up the scale. | |
""" | |
return FunctionExpression("bandwidth", args) | |
def bandspace(cls, *args) -> FunctionExpression: | |
""" | |
Returns the number of steps needed within a band scale, based on the *count* of domain elements and the inner and outer padding values. | |
While normally calculated within the scale itself, this function can be helpful for determining the size of a chart's layout. | |
""" | |
return FunctionExpression("bandspace", args) | |
def gradient(cls, *args) -> FunctionExpression: | |
""" | |
Returns a linear color gradient for the *scale* (whose range must be a `continuous color scheme <https://vega.github.io/vega/docs/schemes>`__ and starting and ending points *p0* and *p1*, each an `[x, y]` array. | |
The points *p0* and *p1* should be expressed in normalized coordinates in the domain `[0, 1]`, relative to the bounds of the item being colored. | |
If unspecified, *p0* defaults to `[0, 0]` and *p1* defaults to `[1, 0]`, for a horizontal gradient that spans the full bounds of an item. | |
The optional *count* argument indicates a desired target number of sample points to take from the color scale. | |
""" | |
return FunctionExpression("gradient", args) | |
def panLinear(cls, *args) -> FunctionExpression: | |
""" | |
Given a linear scale *domain* array with numeric or datetime values, returns a new two-element domain array that is the result of panning the domain by a fractional *delta*. | |
The *delta* value represents fractional units of the scale range; for example, `0.5` indicates panning the scale domain to the right by half the scale range. | |
""" | |
return FunctionExpression("panLinear", args) | |
def panLog(cls, *args) -> FunctionExpression: | |
""" | |
Given a log scale *domain* array with numeric or datetime values, returns a new two-element domain array that is the result of panning the domain by a fractional *delta*. | |
The *delta* value represents fractional units of the scale range; for example, `0.5` indicates panning the scale domain to the right by half the scale range. | |
""" | |
return FunctionExpression("panLog", args) | |
def panPow(cls, *args) -> FunctionExpression: | |
""" | |
Given a power scale *domain* array with numeric or datetime values and the given *exponent*, returns a new two-element domain array that is the result of panning the domain by a fractional *delta*. | |
The *delta* value represents fractional units of the scale range; for example, `0.5` indicates panning the scale domain to the right by half the scale range. | |
""" | |
return FunctionExpression("panPow", args) | |
def panSymlog(cls, *args) -> FunctionExpression: | |
""" | |
Given a symmetric log scale *domain* array with numeric or datetime values parameterized by the given *constant*, returns a new two-element domain array that is the result of panning the domain by a fractional *delta*. | |
The *delta* value represents fractional units of the scale range; for example, `0.5` indicates panning the scale domain to the right by half the scale range. | |
""" | |
return FunctionExpression("panSymlog", args) | |
def zoomLinear(cls, *args) -> FunctionExpression: | |
""" | |
Given a linear scale *domain* array with numeric or datetime values, returns a new two-element domain array that is the result of zooming the domain by a *scaleFactor*, centered at the provided fractional *anchor*. | |
The *anchor* value represents the zoom position in terms of fractional units of the scale range; for example, `0.5` indicates a zoom centered on the mid-point of the scale range. | |
""" | |
return FunctionExpression("zoomLinear", args) | |
def zoomLog(cls, *args) -> FunctionExpression: | |
""" | |
Given a log scale *domain* array with numeric or datetime values, returns a new two-element domain array that is the result of zooming the domain by a *scaleFactor*, centered at the provided fractional *anchor*. | |
The *anchor* value represents the zoom position in terms of fractional units of the scale range; for example, `0.5` indicates a zoom centered on the mid-point of the scale range. | |
""" | |
return FunctionExpression("zoomLog", args) | |
def zoomPow(cls, *args) -> FunctionExpression: | |
""" | |
Given a power scale *domain* array with numeric or datetime values and the given *exponent*, returns a new two-element domain array that is the result of zooming the domain by a *scaleFactor*, centered at the provided fractional *anchor*. | |
The *anchor* value represents the zoom position in terms of fractional units of the scale range; for example, `0.5` indicates a zoom centered on the mid-point of the scale range. | |
""" | |
return FunctionExpression("zoomPow", args) | |
def zoomSymlog(cls, *args) -> FunctionExpression: | |
""" | |
Given a symmetric log scale *domain* array with numeric or datetime values parameterized by the given *constant*, returns a new two-element domain array that is the result of zooming the domain by a *scaleFactor*, centered at the provided fractional *anchor*. | |
The *anchor* value represents the zoom position in terms of fractional units of the scale range; for example, `0.5` indicates a zoom centered on the mid-point of the scale range. | |
""" | |
return FunctionExpression("zoomSymlog", args) | |
def geoArea(cls, *args) -> FunctionExpression: | |
""" | |
Returns the projected planar area (typically in square pixels) of a GeoJSON *feature* according to the named *projection*. | |
If the *projection* argument is `null`, computes the spherical area in steradians using unprojected longitude, latitude coordinates. | |
The optional *group* argument takes a scenegraph group mark item to indicate the specific scope in which to look up the projection. | |
Uses d3-geo's `geoArea <https://d3js.org/d3-geo#geoArea>`__ and `path.area <https://d3js.org/d3-geo#path_area>`__ methods. | |
""" | |
return FunctionExpression("geoArea", args) | |
def geoBounds(cls, *args) -> FunctionExpression: | |
""" | |
Returns the projected planar bounding box (typically in pixels) for the specified GeoJSON *feature*, according to the named *projection*. | |
The bounding box is represented by a two-dimensional array: `[[x0, y0], [x1, y1]]`, | |
where *x0* is the minimum x-coordinate, *y0* is the minimum y-coordinate, | |
*x1* is the maximum x-coordinate, and *y1* is the maximum y-coordinate. | |
If the *projection* argument is `null`, computes the spherical bounding box using unprojected longitude, latitude coordinates. | |
The optional *group* argument takes a scenegraph group mark item to indicate the specific scope in which to look up the projection. | |
Uses d3-geo's `geoBounds <https://d3js.org/d3-geo#geoBounds>`__ and `path.bounds <https://d3js.org/d3-geo#path_bounds>`__ methods. | |
""" | |
return FunctionExpression("geoBounds", args) | |
def geoCentroid(cls, *args) -> FunctionExpression: | |
""" | |
Returns the projected planar centroid (typically in pixels) for the specified GeoJSON *feature*, according to the named *projection*. | |
If the *projection* argument is `null`, computes the spherical centroid using unprojected longitude, latitude coordinates. | |
The optional *group* argument takes a scenegraph group mark item to indicate the specific scope in which to look up the projection. | |
Uses d3-geo's `geoCentroid <https://d3js.org/d3-geo#geoCentroid>`__ and `path.centroid <https://d3js.org/d3-geo#path_centroid>`__ methods. | |
""" | |
return FunctionExpression("geoCentroid", args) | |
def treePath(cls, *args) -> FunctionExpression: | |
""" | |
For the hierarchy data set with the given *name*, returns the shortest path through from the *source* node id to the *target* node id. | |
The path starts at the *source* node, ascends to the least common ancestor of the *source* node and the *target* node, and then descends to the *target* node. | |
""" | |
return FunctionExpression("treePath", args) | |
def treeAncestors(cls, *args) -> FunctionExpression: | |
"""For the hierarchy data set with the given *name*, returns the array of ancestors nodes, starting with the input *node*, then followed by each parent up to the root.""" | |
return FunctionExpression("treeAncestors", args) | |
def containerSize(cls, *args) -> FunctionExpression: | |
""" | |
Returns the current CSS box size (`[el.clientWidth, el.clientHeight]`) of the parent DOM element that contains the Vega view. | |
If there is no container element, returns `[undefined, undefined]`. | |
""" | |
return FunctionExpression("containerSize", args) | |
def screen(cls, *args) -> FunctionExpression: | |
"""Returns the `window.screen <https://developer.mozilla.org/en-US/docs/Web/API/Window/screen>`__ object, or `{}` if Vega is not running in a browser environment.""" | |
return FunctionExpression("screen", args) | |
def windowSize(cls, *args) -> FunctionExpression: | |
"""Returns the current window size (`[window.innerWidth, window.innerHeight]`) or `[undefined, undefined]` if Vega is not running in a browser environment.""" | |
return FunctionExpression("windowSize", args) | |
def warn(cls, *args) -> FunctionExpression: | |
""" | |
Logs a warning message and returns the last argument. | |
For the message to appear in the console, the visualization view must have the appropriate logging level set. | |
""" | |
return FunctionExpression("warn", args) | |
def info(cls, *args) -> FunctionExpression: | |
""" | |
Logs an informative message and returns the last argument. | |
For the message to appear in the console, the visualization view must have the appropriate logging level set. | |
""" | |
return FunctionExpression("info", args) | |
def debug(cls, *args) -> FunctionExpression: | |
""" | |
Logs a debugging message and returns the last argument. | |
For the message to appear in the console, the visualization view must have the appropriate logging level set. | |
""" | |
return FunctionExpression("debug", args) | |
_ExprType = expr | |
# NOTE: Compatibility alias for previous type of `alt.expr`. | |
# `_ExprType` was not referenced in any internal imports/tests. | |