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

如何在Altair中将坐标轴刻度标签设置为百分点格式?

问题描述

我希望将坐标轴刻度标签格式化为百分点。现有如下示例代码:

import altair as alt
from vega_datasets import data

source = data.jobs.url

alt.Chart(source).mark_line().encode(
    alt.X('year:O'),
    alt.Y('perc:Q').axis(format='%'),
    alt.Color('sex:N')
).transform_filter(
    alt.datum.job == 'Welder'
)

我希望将Y轴刻度标签显示为<value>%pt而非<value>%,请问能否实现该需求?

解决方案

完全可以实现,以下是两种实用方法:

方法1:追加后缀到现有格式化标签

先通过format='%'生成百分比格式的标签,再通过labelExpr追加pt后缀:

import altair as alt
from vega_datasets import data

source = data.jobs.url

alt.Chart(source).mark_line().encode(
    alt.X('year:O'),
    alt.Y('perc:Q').axis(format='%'),
    alt.Color('sex:N')
).transform_filter(
    alt.datum.job == 'Welder'
).configure_axisY(
    labelExpr="datum.label + 'pt'"
)

方法2:直接自定义标签表达式

直接在axis的labelExpr中完成数值格式化与后缀拼接,灵活度更高:

import altair as alt
from vega_datasets import data

source = data.jobs.url

alt.Chart(source).mark_line().encode(
    alt.X('year:O'),
    alt.Y('perc:Q').axis(
        labelExpr="format(datum.value, '.0%') + 'pt'"
    ),
    alt.Color('sex:N')
).transform_filter(
    alt.datum.job == 'Welder'
)

其中.0%表示保留0位小数的百分比格式,你可以根据需求调整小数位数,比如.1%对应保留1位小数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:02:32