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

如何在Altair中设置区域格式?替换美元为英镑符号方法咨询

解决Altair图表中美元符号替换为英镑符号的问题

嘿,我明白你想把图表里的美元换成英镑的需求,其实Altair完全支持通过Vega-Lite的区域格式配置来实现,只是这块内容在文档里确实有点隐蔽。我来一步步帮你修改代码:

首先,我们需要定义一个英镑的区域格式配置对象,告诉Vega-Lite用£作为货币符号,同时保留你需要的千分位、小数格式:

gbp_format_locale = {
    "currency": {
        "symbol": "£",
        "decimal": ".",
        "thousands": ",",
        "precision": 2
    }
}

接下来,我们要修改你原代码里的格式设置,把硬编码的$替换成Vega-Lite的currency格式类型,这样它会自动读取我们定义的locale配置。同时把这个配置应用到图表上:

修改后的完整代码如下:

import altair as alt

def chart_tenders_monthly_value(dataframe=None):
    # 定义英镑的区域格式配置
    gbp_format_locale = {
        "currency": {
            "symbol": "£",
            "decimal": ".",
            "thousands": ",",
            "precision": 2
        }
    }

    chart = (
        alt.Chart(dataframe, title="Tender value")
        .mark_bar()
        .encode(
            alt.X(
                "yearmonth(date):O", axis=alt.Axis(title="Month")
            ),
            alt.Y("total_monthly_value:Q", axis=alt.Axis(title="Monthly cumulative tender value (£)") ),
            tooltip=[
                # 用currency格式替代硬编码的$格式
                alt.Tooltip('total_monthly_value:Q', title="Total value", format="currency"),
                alt.Tooltip('median_monthly_value:Q', title="Median value", format="currency"),
                alt.Tooltip('no_of_tenders:Q', title="Total tenders", format=",.2r")
            ],
            color = 'variable:N'
        )
        # 将英镑格式配置应用到整个图表
        .configure(formatLocale=gbp_format_locale)
    )
    text = (
        chart.mark_text(align="center", baseline="bottom")
        .encode(text='label:N')
        # 同样用currency格式生成带英镑符号的文本标签
        .transform_calculate(label=f'format(datum.total_monthly_value,"currency,.3s")')
    )
    return chart+text

关键改动说明:

  • 格式配置对象:gbp_format_locale指定了货币符号为£,同时定义了小数分隔符、千分位分隔符和默认精度,确保数字格式符合英镑的显示习惯。
  • Tooltip格式修改:把原来的format="$,.4r"换成format="currency",这样Vega-Lite会自动调用我们定义的locale配置,生成带£的金额。
  • 文本标签格式修改:transform_calculate里的"$,.3s"改成"currency,.3s",同样利用locale配置生成带英镑的缩写格式(比如£1.2k)。
  • 应用配置:通过.configure(formatLocale=gbp_format_locale)把这个配置绑定到图表上,确保所有用到货币格式的部分都生效。

如果你希望所有图表都默认使用英镑格式,可以在代码开头全局设置渲染器的嵌入选项,这样就不用每个图表都单独配置了:

alt.renderers.set_embed_options(formatLocale=gbp_format_locale)

这样你的所有Altair图表都会自动使用英镑作为货币符号啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:57:35