如何在Altair中设置语言环境?

时间:2019-09-19 15:51:50

标签: altair

我已经成功在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

screenshot of rendered chart

1 个答案:

答案 0 :(得分:1)

有可能,但不幸的是,它没有得到很好的支持。 formatLocale()是必须由渲染器调用的javascript函数。 Jupyter Notebook和JupyterLab使用的Javascript代码在各自的vega扩展中进行了硬编码,因此对于在这些前端中可视化的Altair图表,无法更改此代码。

如果您想自己调整语言环境,最简单的方法是将图表导出为HTML(chart.save('mychart.html')),然后在HTML输出中的javascript中添加对formatLocale的调用。

如果您想以更自动/可重复的方式执行此操作,则可以修改Altair的html输出模板(source)并创建自己的导出器功能,该功能可以使用区域设置或其他自定义javascript将图表转换为HTML。

相关问题