You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用transform_aggregate的Altair直方图无法正确叠加全局均值

Altair直方图叠加均值线消失问题解决

问题根因

你当前的写法中,rule图层编码时用的mean(agg):Q聚合操作,会将已经按发行商聚合后的数据集再次压缩为仅包含全局均值的单行数据,两个图层叠加时数据分组逻辑冲突,导致直方图的分bin计数逻辑失效,柱状图因此无法显示。

修正后代码

import altair as alt
from vega_datasets import data

source = data.movies.url

# 先按发行商聚合得到各发行商平均IMDB评分,再关联计算全局均值
base = alt.Chart(source).transform_aggregate(
    agg='mean(IMDB_Rating)',
    groupby=['Distributor']
).transform_joinaggregate(
    global_mean='mean(agg)'  # 全局均值作为新字段附加到每行数据,不改变原数据行数
)

bar = base.mark_bar().encode(
    x=alt.X('agg:Q', bin=alt.Bin(step=0.5)),
    y='count()'
)

rule = base.mark_rule(color='red').encode(
    x='global_mean:Q',
    size=alt.value(5)
)

bar + rule

修正逻辑说明

使用transform_joinaggregate计算全局均值时,不会将数据集压缩为单行,而是把计算得到的全局均值作为新字段附加到每一行已聚合的数据上,保证柱状图的分bin计数和均值线的取值可以共用同一份完整数据,不会出现逻辑冲突。

内容的提问来源于stack exchange,提问作者shimiao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:06:03