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

如何在Python Altair图表中将G(Giga)单位替换为B(Billion)

Altair SI单位G替换为B的实现方案

这里提供两种可直接落地的实现方式,按需选择即可:

方法1:纯Python端自定义格式(无需调用JS)

直接通过Altair原生的labelExpr轴标签表达式和自定义tooltip配置实现替换,无需额外引入JS代码,适配所有Altair支持的运行环境:

line1=(alt.Chart(df_combined).mark_bar().encode(
     x=alt.X('Date:T', axis=alt.Axis(title=None, grid=False, format= '%b-%Y')),
     y = alt.Y(
         'Current Year:Q',
         axis= alt.Axis(
             title=None,
             titleAngle=0,
             titleY=-20,
             titleAlign="left",
             format='s',
             # 新增这行实现轴标签G替换为B
             labelExpr="replace(datum.label, 'G', 'B')",
             titleColor=COLORS_HEX['SMOKEY_BLUE']),
          ),
     # 新增tooltip配置,实现提示框内容替换
     tooltip=[
         alt.Tooltip('Date:T', title='日期', format='%b-%Y'),
         alt.Tooltip('formatted_val:N', title='当年数值')
     ],
     color = alt.value(COLORS_HEX['SMOKEY_BLUE'])
).add_selection(sel_selection).transform_filter(sel_selection)
# 预处理数值格式替换
.transform_calculate(
    formatted_val = "replace(format(datum['Current Year'], '.3s'), 'G', 'B')"
)
)

如果需要统一所有图表的格式,直接把labelExpr和transform的逻辑封装成公共函数调用即可。

方法2:Jupyter Notebook中覆写d3格式规则

如果希望全局生效不用每个图表单独配置,可以在Notebook中执行一段JS代码覆写d3的SI前缀规则,后续所有生成的Altair图表都会自动用B代替G:
首先先执行JS注入代码:

from IPython.display import Javascript, display

# 执行JS覆写d3的SI单位规则
display(Javascript("""
if (window.d3) {
    d3.formatPrefixes["G"] = "B";
}
// 兼容Altair异步加载d3的时序
setTimeout(() => {
    if (window.d3) d3.formatPrefixes["G"] = "B";
}, 1000);
"""))

之后你原来的绘图代码不需要做任何修改,生成的图表坐标轴和工具提示都会自动将G替换为B。
注意:该配置仅在当前Notebook会话生效,重启内核后需要重新执行这段注入代码


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:06:03