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

Altair柱状图标签字符串与聚合函数拼接及多行标签实现问题

Altair 动态文本标签实现方案

1. 实现带固定前缀的求和标签

你需要组合transform_aggregate + transform_calculate实现字符串拼接,transform 执行顺序和代码书写顺序一致,transform_filter(crossfilter)先执行筛选,后续的聚合、字符串计算都是基于选中的数据集,会随交叉筛选的选择实时同步更新,完全适配联动需求。

修改后的代码示例:

crossfilter = alt.selection(type='interval', encodings=['x'])

tick_up = alt.Chart().transform_filter(crossfilter).mark_tick(color='black').encode(
    x = x, 
    y = alt.Y(plus_error+':Q', aggregate='sum')
)
text = tick_up.mark_text(
    align='left',
    baseline='middle',
    dx=12  
).transform_aggregate(
    # 先基于筛选后的数据聚合求和
    sum_error = 'sum(error)'
).transform_calculate(
    # 拼接固定前缀和求和结果
    text_label = "'error: ' + datum.sum_error"
).encode(
    text='text_label:N'
)

2. 实现多行标签

Altair的mark_text支持\n作为换行符,你只需要在transform_calculate拼接字符串时插入换行符即可,还可以通过lineHeight参数调整行间距。

示例代码:

text = tick_up.mark_text(
    align='left',
    baseline='middle',
    dx=12,
    lineHeight=18  # 调整两行文本的间距
).transform_aggregate(
    sum_curr = 'sum(curr_error)',
    sum_prev = 'sum(previous_error)'
).transform_calculate(
    text_label = "'curr_error: ' + datum.sum_curr + '\nprevious_error: ' + datum.sum_prev"
).encode(
    text='text_label:N'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:24:05