Altair имеет встроенные временные группировки, использующие TimeUnit преобразование , которое можно использовать либо с помощью явного преобразования, либо с помощью кодирования сокращений.
Вот пример воспроизведения одного из диаграммы из этого раздела книги - обратите внимание, что средство визуализации Vega-Lite становится медленным, когда объем данных увеличивается до десятков тысяч записей, поэтому я использую altair_data_server , чтобы обслуживать данные и ограничивать диаграмму первым годом :
# Load the data
# !curl -o FremontBridge.csv https://data.seattle.gov/api/views/65db-xm6k/rows.csv?accessType=DOWNLOAD
import pandas as pd
data = pd.read_csv('FremontBridge.csv', parse_dates=['Date'])
data.columns = ['Date', 'Total', 'East', 'West']
df = data.iloc[:24 * 365] # limit to first year of data
# Draw the chart
import altair as alt
alt.data_transformers.enable('data_server') # handle larger datasets
alt.Chart(df).mark_line().transform_fold(
['Total', 'East', 'West'],
).encode(
x='hours(Date):T',
y='sum(value):Q',
color='key:N'
)
Эта грамматика timeUnit достаточно гибкая и позволяет разбивать и группировать по нескольким атрибутам даты в одном графике; например, вот тренд, отмеченный днем недели:
alt.Chart(df).transform_fold(
['Total', 'East', 'West']
).mark_line().encode(
x='hours(Date):T',
y='sum(value):Q',
color='key:N',
facet=alt.Facet('day(Date):O', columns=4)
).properties(width=200, height=150)