
:orphan:
:html_theme.sidebar_secondary.remove:

.. This document is auto-generated by the altair-gallery extension. Do not modify directly.

.. _gallery_us_population_over_time:


US Population by Age and Sex
============================
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.


.. altair-plot::
    :remove-code:
    


    import altair as alt
    from altair.datasets import data

    source = data.population.url

    select_year = alt.selection_point(
        name="Year",
        fields=["year"],
        bind=alt.binding_range(min=1900, max=2000, step=10, name="Year"),
        value=2000,
    )

    alt.Chart(source).mark_bar().encode(
        x=alt.X("sex:N", axis=alt.Axis(labels=False, title=None, ticks=False)),
        y=alt.Y("people:Q", scale=alt.Scale(domain=(0, 12000000)), title="Population"),
        color=alt.Color(
            "sex:N",
            scale=alt.Scale(domain=("Male", "Female"), range=["steelblue", "salmon"]),
            title="Sex",
        ),
        column=alt.Column("age:O", title="Age"),
    ).properties(
        width=20,
        title="U.S. Population by Age and Sex"
    ).add_params(
        select_year
    ).transform_calculate(
        "sex", alt.expr.if_(alt.datum.sex == 1, "Male", "Female")
    ).transform_filter(
        select_year
    ).configure_facet(
        spacing=8
    )


.. tab-set::

    .. tab-item:: Method syntax
        :sync: method

        .. code:: python


            import altair as alt
            from altair.datasets import data

            source = data.population.url

            select_year = alt.selection_point(
                name="Year",
                fields=["year"],
                bind=alt.binding_range(min=1900, max=2000, step=10, name="Year"),
                value=2000,
            )

            alt.Chart(source).mark_bar().encode(
                alt.X("sex:N").title('').axis(labels=False, ticks=False),
                alt.Y("people:Q").scale(domain=(0, 12000000)).title("Population"),
                alt.Color("sex:N")
                    .scale(domain=("Male", "Female"), range=["steelblue", "salmon"])
                    .title("Sex"),
                alt.Column("age:O").title("Age")
            ).properties(
                width=20,
                title="U.S. Population by Age and Sex"
            ).add_params(
                select_year
            ).transform_calculate(
                "sex", alt.expr.if_(alt.datum.sex == 1, "Male", "Female")
            ).transform_filter(
                select_year
            ).configure_facet(
                spacing=8
            )


    .. tab-item:: Attribute syntax
        :sync: attribute

        .. code:: python


            import altair as alt
            from altair.datasets import data

            source = data.population.url

            select_year = alt.selection_point(
                name="Year",
                fields=["year"],
                bind=alt.binding_range(min=1900, max=2000, step=10, name="Year"),
                value=2000,
            )

            alt.Chart(source).mark_bar().encode(
                x=alt.X("sex:N", axis=alt.Axis(labels=False, title=None, ticks=False)),
                y=alt.Y("people:Q", scale=alt.Scale(domain=(0, 12000000)), title="Population"),
                color=alt.Color(
                    "sex:N",
                    scale=alt.Scale(domain=("Male", "Female"), range=["steelblue", "salmon"]),
                    title="Sex",
                ),
                column=alt.Column("age:O", title="Age"),
            ).properties(
                width=20,
                title="U.S. Population by Age and Sex"
            ).add_params(
                select_year
            ).transform_calculate(
                "sex", alt.expr.if_(alt.datum.sex == 1, "Male", "Female")
            ).transform_filter(
                select_year
            ).configure_facet(
                spacing=8
            )
