Накопление — Stack

Преобразование stack вычисляет значения для кодирований с накоплением. Рассмотрим эту столбчатую диаграмму:

import altair as alt
from altair.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)

Здесь данные неявно группируются и складываются. Если нужно напрямую получить вычисленные значения накопления, ту же диаграмму можно построить вручную с помощью stack:

import altair as alt
from altair.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.

Параметры преобразования

Метод Chart.transform_stack основан на классе StackTransform, который поддерживает следующие параметры:

Нажмите, чтобы показать таблицу
СвойствоТипОписание
asanyOf(FieldName, array(FieldName))

Имена выходных полей: строка или массив из двух строк для начала и конца накопления соответственно. При одной строке, например "val", поле конца называется "val_end".

groupbyarray(FieldName)

Поля данных для группировки.

offset['zero', 'center', 'normalize']

Режим накопления примитивов: "zero", "center" или "normalize". "zero" начинает накопление с 0; "center" центрирует группы; "normalize" вычисляет доли для каждой точки накопления в диапазоне [0,1]. По умолчанию: "zero".

sortarray(SortField)

Поле, определяющее порядок элементов диаграммы с накоплением.

stackFieldName

Поле, значения которого складываются.