【发布时间】:2020-07-01 23:54:37
【问题描述】:
为清晰起见进行了重大编辑,并考虑了@jakevdp 评论/答案
问题:绘制数据的时间序列(汇总为月份日期),其中 x 轴是 Jan-Dec 月份,并且每年的数据都是单独的颜色。但不是从 1 月到 12 月,而是从 6 月到 5 月对轴进行排序(从科学上讲,这是因为冬天是感兴趣的季节,并且希望它位于情节的中心)。
最初的问题不清楚,有用的解决方案指出了序数和时间编码以及排序与轴格式之间的差异
#produces plot desired but with jan-dec range
import pandas as pd
import altair as alt
df = pd.DataFrame({
'date': pd.date_range('2019-01-01', freq='M', periods=50),
'value': range(50)
})
alt.Chart(df).mark_line().encode(
x=alt.X('month(date):O'),
y='value:Q',
color=alt.Color('year(date):N')
)
然后按月份排序
import pandas as pd
import altair as alt
df = pd.DataFrame({
'date': pd.date_range('2018-01-01', freq='M', periods=50),
'value': range(50)
})
alt.Chart(df).mark_line().encode(
x=alt.X('month(date):O',
sort=['Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May']),
y='value:Q',
color=alt.Color('year(date):N')
)
确实实现了我想要的情节风格
问题
这可以用月日期聚合数据来完成吗?
import pandas as pd
import altair as alt
df = pd.DataFrame({
'date': pd.date_range('2018-01-01', freq='D', periods=500),
'value': range(500)
})
alt.Chart(df).mark_line().encode(
x=alt.X('month(date):O',
sort=['Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May']),
y='value:Q',
color=alt.Color('year(date):N')
)
【问题讨论】:
-
解决方案可能仍然是带有轴格式的复杂图表