# https://altair-viz.github.io/gallery/airports_count.html

import altair as alt
from vega_datasets import data

airports = data.airports.url
states = alt.topo_feature(data.us_10m.url, feature="states")

# US states background
background = (
    alt.Chart(states)
    .mark_geoshape(fill="lightgray", stroke="white")
    .properties(width=500, height=300)
    .project("albersUsa")
)

# airport positions on background
points = (
    alt.Chart(airports)
    .transform_aggregate(
        latitude="mean(latitude)",
        longitude="mean(longitude)",
        count="count()",
        groupby=["state"],
    )
    .mark_circle()
    .encode(
        longitude="longitude:Q",
        latitude="latitude:Q",
        size=alt.Size("count:Q", title="Number of Airports"),
        color=alt.value("steelblue"),
        tooltip=["state:N", "count:Q"],
    )
    .properties(title="Number of airports in US")
)

background + points
