我正在慢慢理解涉及三个财政年度数据的时间序列图的问题。
这是一些示例数据。
Financial Year Month Category Value FY
0 2022-04-01 2023 Apr Total 53,616.40 2022-2023
1 2022-05-01 2023 May Total 56,652.97 2022-2023
2 2022-06-01 2023 Jun Total 41,240.00 2022-2023
3 2022-07-01 2023 Jul Total 37,039.38 2022-2023
4 2022-08-01 2023 Aug Total 46,683.56 2022-2023
我可以像这样绘制时间序列:
# Create the Altair chart
chart = alt.Chart(marketing_block_melted).mark_bar().encode(
x=alt.X('Date:T', sort=FY_MONTH_SHORT_ORDER),
y=alt.Y('Value:Q'),
color='FY:N',
tooltip=['Date:T', 'Value:Q', 'Financial Year:N']
).properties(
width=800,
height=400,
title='Year-by-Year Comparison of Financial Data'
)
chart
[![在此处输入图像描述][1]][1]
这很好。但我想绘制从四月到三月的每年数据,这样我就可以比较历年一个月的财务状况。 [1]:https://i.sstatic.net/6p7AP7BM.png
是的,这可以通过在 x 编码上设置时间单位并按会计年度月份排序来完成。这是库存数据的示例:
import altair as alt
import polars as pl
from vega_datasets import data
source = data.stocks()
df = pl.DataFrame(source).filter(
pl.col("symbol") == "AAPL",
).with_columns(
fy=pl.col("date").dt.year() - pl.when(pl.col("date").dt.month() <= 3).then(1).otherwise(0),
fy_month=pl.col("date").dt.month() - 3 + pl.when(pl.col("date").dt.month() <= 3).then(12).otherwise(0)
).filter(
pl.col("fy").is_in([2004, 2005, 2006])
)
alt.Chart(df).mark_bar().encode(
x=alt.X("date:O", timeUnit="month", sort=alt.EncodingSortField("fy_month")),
xOffset=alt.XOffset("fy:N"),
y="mean(price)",
color=alt.Color("fy:N")
).properties(width=400)