Когда вы передаете целочисленное значение во временную кодировку, оно обрабатывает его как метку времени Unix (т.е. миллисекунды с 1 января 1970 года).
Если вы хотите создать объект datetime из целых лет, вы можетеСделайте это, предварительно обработав данные пандами для создания столбца DateTime:
import altair as alt
import pandas as pd
data = pd.DataFrame({'year': [2011, 2012], 'value': [5000, 10000]})
data['date'] = pd.to_datetime(data['year'], format='%Y')
alt.Chart(data).mark_line(point = True).encode(
x = alt.X('date:T', timeUnit = 'year'),
y = alt.Y('value:Q')
)
или, если вы хотите избежать предварительной обработки данных, вы можете использовать преобразование вычисления непосредственно в Altair:
import altair as alt
import pandas as pd
data = pd.DataFrame({'year': [2011, 2012], 'value': [5000, 10000]})
alt.Chart(data).transform_calculate(
date='datetime(datum.year, 1, 1)' # (year, month, date)
).mark_line(point = True).encode(
x = alt.X('date:T', timeUnit = 'year'),
y = alt.Y('value:Q')
)