[英]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 09
和april 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.