Stack Transform
The stack transform allows you to compute values associated with stacked versions of encodings. For example, consider this stacked bar chart:
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)
                  Implicitly, this data is being grouped and stacked, but what if you would like to access those stacked values directly? We can construct that same chart manually using the stack transform:
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)
                  Notice that the bars are now explicitly drawn between values computed and specified within the x and x2 encodings.
Transform Options
The transform_stack()
                    method is built on the StackTransform
                    class, which has the following options:
| Property | Type | Description | 
|---|---|---|
| as | anyOf( | Output field names. This can be either a string or an array of strings with two elements
                            denoting the name for the fields for stack start and stack end respectively. If a single
                            string(e.g.,  | 
| groupby | array( | The data fields to group by. | 
| offset | [‘zero’, ‘center’, ‘normalize’] | Mode for stacking marks. One of  Default value:  | 
| sort | array( | Field that determines the order of leaves in the stacked charts. | 
| stack | The field which is stacked. |