繁体   English   中英

在 altair 图表中显示 B(Billion) 而不是 G(Giga) python

[英]To show B(Billion) instead of G(Giga) in altair charts python

希望使用 altair 图表在 python 代码中用 B(Billion) 替换 G(Giga)。 我对此进行了大量研究,但找不到在 python 中覆盖 d3 格式的方法。 当前使用以下代码作为轴格式:

line1=(alt.Chart(df_combined).mark_bar().encode(
     x=alt.X('Date:T', axis=alt.Axis(title=None, grid=False, format= '%b-%Y')),
     y = alt.Y(
         'Current Year:Q',
         axis= alt.Axis(
             title=None,
                titleAngle=0,
                titleY=-20,
                titleAlign="left",
                format='s',
                titleColor=COLORS_HEX['SMOKEY_BLUE']),
              ),
    color = alt.value(COLORS_HEX['SMOKEY_BLUE'])
).add_selection(sel_selection).transform_filter(sel_selection)
)

但是,这会生成带有 SI 通知的轴和工具提示,其中将 10^9 显示为 G 而不是 B(十亿)。 关于这个相关主题的很多主题都表明通过覆盖 d3 格式函数在 javascript 中实现这一点,但是我如何通过在 python notebook 中调用它来覆盖这个函数。 获得有关此主题的一些指示将非常有帮助。

谢谢你。

我不知道有什么方法可以在标准 Altair 显示机制中从 Python 创建自定义 d3 格式化程序。 您始终可以将图表导出为 JSON,然后使用vega-embed手动显示您的图表以及您希望的任何 Javascript 附加功能。

在 Python 方面,大致完成您想要的一种方法是使用labelExpr定义自定义标签表达式。 例如:

import pandas as pd
import altair as alt
df = pd.DataFrame({'x': [1E9, 2E9, 3E9]})
alt.Chart(df).mark_point().encode(
    alt.X('x', axis=alt.Axis(tickCount=5, labelExpr='datum.value / 1E9 + "B"'))
)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM