
:orphan:
:html_theme.sidebar_secondary.remove:

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

.. _gallery_bar_chart_with_highlighted_segment:


Bar Chart with Highlighted Segment
----------------------------------
This example shows a bar chart that highlights values beyond a threshold.


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


    import altair as alt
    import pandas as pd
    from altair.datasets import data

    source = data.wheat()
    threshold = pd.DataFrame([{"threshold": 90}])

    bars = alt.Chart(source).mark_bar().encode(
        x="year:O",
        y="wheat:Q",
    )

    highlight = alt.Chart(source).mark_bar(color="#e45755").encode(
        x='year:O',
        y='baseline:Q',
        y2='wheat:Q'
    ).transform_filter(
        alt.datum.wheat > 90
    ).transform_calculate("baseline", "90")

    rule = alt.Chart(threshold).mark_rule().encode(
        y='threshold:Q'
    )

    (bars + highlight + rule).properties(width=600)
    # No channel encoding options are specified in this chart
    # so the code is the same as for the method-based syntax.


.. tab-set::

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

        .. code:: python


            import altair as alt
            import pandas as pd
            from altair.datasets import data

            source = data.wheat()
            threshold = pd.DataFrame([{"threshold": 90}])

            bars = alt.Chart(source).mark_bar().encode(
                x="year:O",
                y="wheat:Q",
            )

            highlight = alt.Chart(source).mark_bar(color="#e45755").encode(
                x='year:O',
                y='baseline:Q',
                y2='wheat:Q'
            ).transform_filter(
                alt.datum.wheat > 90
            ).transform_calculate("baseline", "90")

            rule = alt.Chart(threshold).mark_rule().encode(
                y='threshold:Q'
            )

            (bars + highlight + rule).properties(width=600)


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

        .. code:: python


            import altair as alt
            import pandas as pd
            from altair.datasets import data

            source = data.wheat()
            threshold = pd.DataFrame([{"threshold": 90}])

            bars = alt.Chart(source).mark_bar().encode(
                x="year:O",
                y="wheat:Q",
            )

            highlight = alt.Chart(source).mark_bar(color="#e45755").encode(
                x='year:O',
                y='baseline:Q',
                y2='wheat:Q'
            ).transform_filter(
                alt.datum.wheat > 90
            ).transform_calculate("baseline", "90")

            rule = alt.Chart(threshold).mark_rule().encode(
                y='threshold:Q'
            )

            (bars + highlight + rule).properties(width=600)
            # No channel encoding options are specified in this chart
            # so the code is the same as for the method-based syntax.
