import numpy as np
import pandas as pd
import altair as alt
date = pd.date_range(start='2021-01-01', end='2021-12-31')
value = np.random.normal(10, 5, size=365 )
df = pd.DataFrame(list(zip(date, value)), columns=['date', 'value'])
df['week'] = df['date'].dt.strftime('%W')
df['weekday'] = df['date'].dt.day_name()
df.head()
alt.Chart(df).mark_rect().encode(
x = alt.X(field='week', type='ordinal', title=None),
y = alt.Y(field='weekday', type='ordinal', sort=alt.Sort(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'])),
color = alt.Color(field='value', type='quantitative', scale=alt.Scale(scheme='redblue', domainMid=0)),
column = alt.Column(field='date', type='temporal', timeUnit='month', title=None)
).resolve_scale(x='independent').properties(width=900/12).configure_legend(orient='top').configure_axis(labelAngle=0)
WIDTH=900
SPACING=12.5
MONTHS=12
alt.Chart(df).mark_rect().encode(
x = alt.X(field='week', type='ordinal'),
y = alt.Y(field='weekday', type='ordinal',
sort=alt.Sort(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']),
axis=alt.Axis(labelExpr = "slice(datum.label,0,1)")),
color = alt.Color(field='value', type='quantitative', title='legend title, unit', scale=alt.Scale(scheme='redblue', domainMid=0)),
column = alt.Column(field='date', type='temporal', timeUnit='month', title=None, spacing=SPACING),
tooltip=alt.Tooltip(field='value', type='quantitative')
).resolve_scale(x='independent'
).properties(width=WIDTH/MONTHS, autosize=alt.AutoSizeParams(contains='padding'),
title=alt.TitleParams(text='Title', subtitle=['Subtitle', ''])
).configure_legend(orient='top', gradientLength=WIDTH+SPACING*(MONTHS+1), gradientThickness=10
).configure_axisX(title=None, labels=False, ticks=False, domain=False
).configure_axisY(title=None, ticks=False, domain=False, labelPadding=10
).configure_view(strokeWidth=1, stroke='black')