如何在 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
放在第一位,将根据过滤后的值计算总和。
我有一个带有两个定量变量 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
放在第一位,将根据过滤后的值计算总和。