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

