簡體   English   中英

創建在 X 軸上按周分組日期的 Altair 圖表

[英]Create Altair chart with grouped dates by week in X axis

DATE,AMOUNT
2022-04-05,100
2022-04-06,10
2022-04-07,90
2022-04-08,75
2022-04-12,32
2022-04-13,400
2022-04-14,28
2022-04-15,50

使用這樣的數據集,我如何創建按周分組的條形圖,以便 X 軸僅顯示兩個條形圖, april 03 - april 09april 11 - april 17 (考慮到一周從星期日開始,即使沒有像april 04日這樣的日期的數據)

您可以使用VegaLite 中的時間單位對觀察結果進行分組。 week()將返回周數,但我不確定是否有一種方法可以按照您想要的方式格式化 label,而無需通過labelExpr手動執行,如下所示。

import pandas as pd
import altair as alt

df = pd.read_clipboard(sep=',')

alt.Chart(df).mark_bar().encode(
    x='AMOUNT',
    y=alt.Y(
        'week(DATE):O', axis=alt.Axis(
            labelExpr="datum.label == 'W14' ? 'Apr 04 - Apr 10' : 'Apr 11 - Apr 17'")
   )
)

在此處輸入圖像描述

您也可以先通過 pandas 計算標簽,這比上面的更自動:

df['DATE'] = pd.to_datetime(df['DATE'])
df_by_week = df.resample('W', on ='DATE').sum().reset_index()
df_by_week['date_label'] = df_by_week['DATE'].apply(
    lambda x: f'{(x - pd.Timedelta(days=6)).strftime("%b %d")} - {x.strftime("%B %d")}'
)
alt.Chart(df_by_week).mark_bar().encode(
    x='AMOUNT',
    y='date_label'
)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM