堆叠#

堆叠转换允许您计算与编码的堆叠版本相关的值。例如,考虑这个堆叠条形图

import altair as alt
from vega_datasets import data

source = data.barley()

alt.Chart(source).mark_bar().encode(
    column='year:O',
    x='yield:Q',
    y='variety:N',
    color='site:N'
).properties(width=220)

隐式地,这些数据被分组并堆叠,但是如果您想直接访问那些堆叠的值呢?我们可以使用堆叠转换手动构建相同的图表

import altair as alt
from vega_datasets import data

source = data.barley()

alt.Chart(source).transform_stack(
    stack='yield',
    as_=['yield_1', 'yield_2'],
    groupby=['year', 'variety'],
    sort=[alt.SortField('site', 'descending')]
).mark_bar().encode(
    column='year:O',
    x=alt.X('yield_1:Q').title('yield'),
    x2='yield_2:Q',
    y='variety:N',
    color='site:N',
    tooltip=['site', 'yield', 'variety']
).properties(width=220)

请注意,现在条形图是显式地绘制在 x 和 x2 编码中计算和指定的值之间。

转换选项#

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

点击显示表格

属性

类型

描述

as

anyOf(FieldName, array(FieldName))

输出字段名称。这可以是字符串,也可以是包含两个元素的字符串数组,分别表示堆叠开始和堆叠结束字段的名称。如果提供单个字符串(例如 "val"),则结束字段将是 "val_end"

groupby

array(FieldName)

用于分组的数据字段。

offset

[‘zero’, ‘center’, ‘normalize’]

标记的堆叠模式。可选值包括 "zero"(默认)、"center""normalize""zero" 偏移量将从 0 开始堆叠。"center" 偏移量将使堆叠居中。"normalize" 偏移量将计算每个堆叠点的百分比值,输出值范围为 [0,1]

默认值: "zero"

sort

array(SortField)

确定堆叠图表中叶子顺序的字段。

stack

FieldName

被堆叠的字段。