我已经成功在Altair中创建并渲染了带有货币前缀($)的图表,但是我需要将其设置为GBP(£)。我知道可以设置一个Vega-lite formatLocale
,但是我不知道如何将所需的值传递给Vega-lite。我在Altair文档中找不到任何语言环境。
def chart_tenders_monthly_value(dataframe=None):
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=[
alt.Tooltip('total_monthly_value:Q', title="Total value", format="$,.4r"),
alt.Tooltip('median_monthly_value:Q', title="Median value", format="$,.4r"),
alt.Tooltip('no_of_tenders:Q', title="Total tenders", format=",.2r")
],
color = 'variable:N'
)
)
text = (
chart.mark_text(align="center", baseline="bottom")
.encode(text='label:N')
.transform_calculate(label=f'format(datum.total_monthly_value,"$,.3s")')
)
return chart+text
答案 0 :(得分:1)
有可能,但不幸的是,它没有得到很好的支持。 formatLocale()
是必须由渲染器调用的javascript函数。 Jupyter Notebook和JupyterLab使用的Javascript代码在各自的vega扩展中进行了硬编码,因此对于在这些前端中可视化的Altair图表,无法更改此代码。
如果您想自己调整语言环境,最简单的方法是将图表导出为HTML(chart.save('mychart.html')
),然后在HTML输出中的javascript中添加对formatLocale
的调用。
如果您想以更自动/可重复的方式执行此操作,则可以修改Altair的html输出模板(source)并创建自己的导出器功能,该功能可以使用区域设置或其他自定义javascript将图表转换为HTML。