![](/img/trans.png)
[英]B (billions) instead of G (giga) in python plotly customdata [SI prefix d3]
[英]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.