带有 Altair 定量 x 轴的堆栈面积图

Stack area chart with quantitative x-axis with altair

当 x 轴为时间时,altair 中的面积图会自动堆叠。但是当x属于定量数据类型时,区域不堆叠。

import pandas as pd
import numpy as np
import string
import altair as alt

np.random.seed(394378)
n_series = 3
series_names = list(string.ascii_lowercase)[:n_series]
x_range = range(0, 21)
df = pd.DataFrame({"Series": np.tile(series_names, len(x_range)),
                   "X": np.repeat(x_range, n_series),
                   "Y": np.random.poisson(lam = 10, size = len(x_range) * n_series)})

alt.Chart(df).\
    mark_area().\
    encode(
        x = "X:Q",
        y = "Y:Q",
        color = "Series:N"
)

如何堆叠区域?

您可以通过将 stack=True 传递给 y 编码来实现。例如:

alt.Chart(df).\
    mark_area().\
    encode(
        x = "X:Q",
        y = alt.Y("Y:Q", stack=True),
        color = "Series:N"
)