37 lines
1 KiB
Python
37 lines
1 KiB
Python
|
"""
|
||
|
US Population Over Time
|
||
|
=======================
|
||
|
This chart visualizes the age distribution of the US population over time.
|
||
|
It uses a slider widget that is bound to the year to visualize the age
|
||
|
distribution over time.
|
||
|
"""
|
||
|
# category: case studies
|
||
|
import altair as alt
|
||
|
from vega_datasets import data
|
||
|
|
||
|
source = data.population.url
|
||
|
|
||
|
pink_blue = alt.Scale(domain=('Male', 'Female'),
|
||
|
range=["steelblue", "salmon"])
|
||
|
|
||
|
slider = alt.binding_range(min=1900, max=2000, step=10)
|
||
|
select_year = alt.selection_single(name="year", fields=['year'],
|
||
|
bind=slider, init={'year': 2000})
|
||
|
|
||
|
alt.Chart(source).mark_bar().encode(
|
||
|
x=alt.X('sex:N', title=None),
|
||
|
y=alt.Y('people:Q', scale=alt.Scale(domain=(0, 12000000))),
|
||
|
color=alt.Color('sex:N', scale=pink_blue),
|
||
|
column='age:O'
|
||
|
).properties(
|
||
|
width=20
|
||
|
).add_selection(
|
||
|
select_year
|
||
|
).transform_calculate(
|
||
|
"sex", alt.expr.if_(alt.datum.sex == 1, "Male", "Female")
|
||
|
).transform_filter(
|
||
|
select_year
|
||
|
).configure_facet(
|
||
|
spacing=8
|
||
|
)
|