mirror of
https://github.com/aykhans/AzSuicideDataVisualization.git
synced 2025-04-21 18:23:35 +00:00
66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
"""
|
|
Atmospheric CO2 Concentration
|
|
-----------------------------
|
|
This example is a fully developed line chart that uses a window transformation.
|
|
It was inspired by `Gregor Aisch's work at datawrapper
|
|
<https://www.datawrapper.de/_/OHgEm/>`_.
|
|
"""
|
|
# category: case studies
|
|
import altair as alt
|
|
from vega_datasets import data
|
|
|
|
source = data.co2_concentration.url
|
|
|
|
base = alt.Chart(
|
|
source,
|
|
title="Carbon Dioxide in the Atmosphere"
|
|
).transform_calculate(
|
|
year="year(datum.Date)"
|
|
).transform_calculate(
|
|
decade="floor(datum.year / 10)"
|
|
).transform_calculate(
|
|
scaled_date="(datum.year % 10) + (month(datum.Date)/12)"
|
|
).transform_window(
|
|
first_date='first_value(scaled_date)',
|
|
last_date='last_value(scaled_date)',
|
|
sort=[{"field": "scaled_date", "order": "ascending"}],
|
|
groupby=['decade'],
|
|
frame=[None, None]
|
|
).transform_calculate(
|
|
end="datum.first_date === datum.scaled_date ? 'first' : datum.last_date === datum.scaled_date ? 'last' : null"
|
|
).encode(
|
|
x=alt.X(
|
|
"scaled_date:Q",
|
|
axis=alt.Axis(title="Year into Decade", tickCount=11)
|
|
),
|
|
y=alt.Y(
|
|
"CO2:Q",
|
|
title="CO2 concentration in ppm",
|
|
scale=alt.Scale(zero=False)
|
|
)
|
|
)
|
|
|
|
line = base.mark_line().encode(
|
|
color=alt.Color(
|
|
"decade:O",
|
|
scale=alt.Scale(scheme="magma"),
|
|
legend=None
|
|
)
|
|
)
|
|
|
|
text = base.encode(text="year:N")
|
|
|
|
start_year = text.transform_filter(
|
|
alt.datum.end == 'first'
|
|
).mark_text(baseline="top")
|
|
|
|
end_year = text.transform_filter(
|
|
alt.datum.end == 'last'
|
|
).mark_text(baseline="bottom")
|
|
|
|
(line + start_year + end_year).configure_text(
|
|
align="left",
|
|
dx=1,
|
|
dy=3
|
|
).properties(width=600, height=375)
|