如何在 Altair 图表中将公式作为 "x variable" 传递?

How to pass a formula as "x variable" in Altair chart?

我有一个带有两个定量变量 A 和 B 的 pandas DF。

我想按照示例库 (https://altair-viz.github.io/gallery/selection_histogram.html#selection-histogram) 中的描述构建图表。

散点图没有问题。 但对于条形图,我想表示 A 和 B 之间的平均差异(公式应为:sum(A)/sum(B)-1)仅用于画笔选择。

有没有办法在下面代码的 x 参数中传递公式?

chart1 = alt.Chart(df).mark_bar().encode(
    #y='Origin:N',
    #color='Origin:N',
    x='sum(A)/sum(B)-1'
).transform_filter(
    brush
)

感谢您的帮助

看看Aggregate Transform and Calculate Transform

看起来像这样:

chart = alt.Chart(df).transform_filter(
    brush
).transform_aggregate(
    sum_A = 'sum(A)',
    sum_B = 'sum(B)',
    groupby=['Origin']
).transform_calculate(
    diff = 'datum.sum_A / datum.sum_B - 1'
).mark_bar().encode(
    y='Origin:N',
    color='Origin:N',
    x='diff:Q'
)

一般来说,转换的顺序很重要:例如,通过将 transform_filter 放在第一位,将根据过滤后的值计算总和。