计算#

计算转换允许用户在数据集中定义新字段,这些字段使用表达式语法从其他字段计算得出。

举个简单的例子,这里我们使用带有简单输入序列的数据,并计算一些三角函数量。

import altair as alt
import pandas as pd

data = pd.DataFrame({'t': range(101)})

alt.Chart(data).mark_line().encode(
    x='x:Q',
    y='y:Q',
    order='t:Q'
).transform_calculate(
    x='cos(datum.t * PI / 50)',
    y='sin(datum.t * PI / 25)'
)

transform_calculate 中的每个参数都是一个 Vega 表达式字符串,它是一组定义明确的 JavaScript 风格的操作,可用于从现有字段计算出新字段。

为了简化在 Python 中构建这些 Vega 表达式的过程,Altair 提供了 expr 模块,该模块提供常量和函数,允许使用 Python 语法构建这些表达式;例如

alt.Chart(data).mark_line().encode(
    x='x:Q',
    y='y:Q',
    order='t:Q'
).transform_calculate(
    x=alt.expr.cos(alt.datum.t * alt.expr.PI / 50),
    y=alt.expr.sin(alt.datum.t * alt.expr.PI / 25)
)

Altair 表达式旨在输出有效的 Vega 表达式。使用它们的好处是 Python 解释器可以确保语法正确,并且可以使用 expr 子模块的 Tab 补全功能来探索可用的函数和常量。

在构建 过滤器时,也可以使用这些表达式,我们将在下一节中看到。

转换选项#

transform_calculate() 方法基于 CalculateTransform 类构建,该类具有以下选项

点击显示表格

属性

类型

描述

as

字段名称

用于存储计算公式值的字段。

calculate

字符串

一个 expression <https://vega.github.io/vega-lite/docs/types.html#expression>__ 字符串。使用变量 datum 指代当前数据对象。