
:orphan:
:html_theme.sidebar_secondary.remove:

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

.. _gallery_interactive_brush:


Interactive Rectangular Brush
=============================
This example shows how to add a simple rectangular brush to a scatter plot.
By clicking and dragging on the plot, you can highlight points within the
range.


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


    import altair as alt
    from altair.datasets import data

    source = data.cars()
    brush = alt.selection_interval()

    alt.Chart(source).mark_point().encode(
        x='Horsepower:Q',
        y='Miles_per_Gallon:Q',
        color=alt.when(brush).then("Cylinders:O").otherwise(alt.value("grey")),
    ).add_params(brush)
    # 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
            from altair.datasets import data

            source = data.cars()
            brush = alt.selection_interval()

            alt.Chart(source).mark_point().encode(
                x='Horsepower:Q',
                y='Miles_per_Gallon:Q',
                color=alt.when(brush).then("Cylinders:O").otherwise(alt.value("grey")),
            ).add_params(brush)


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

        .. code:: python


            import altair as alt
            from altair.datasets import data

            source = data.cars()
            brush = alt.selection_interval()

            alt.Chart(source).mark_point().encode(
                x='Horsepower:Q',
                y='Miles_per_Gallon:Q',
                color=alt.when(brush).then("Cylinders:O").otherwise(alt.value("grey")),
            ).add_params(brush)
            # No channel encoding options are specified in this chart
            # so the code is the same as for the method-based syntax.
