簡體   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