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
相关产品推荐
相关产品推荐

