
:orphan:
:html_theme.sidebar_secondary.remove:

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

.. _gallery_layered_histogram:


Layered Histogram
=================
This example shows how to use opacity to make a layered histogram in Altair.


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


    import pandas as pd
    import altair as alt
    import numpy as np
    np.random.seed(42)

    # Generating Data
    source = pd.DataFrame({
        'Trial A': np.random.normal(0, 0.8, 1000),
        'Trial B': np.random.normal(-2, 1, 1000),
        'Trial C': np.random.normal(3, 2, 1000)
    })

    alt.Chart(source).transform_fold(
        ['Trial A', 'Trial B', 'Trial C'],
        as_=['Experiment', 'Measurement']
    ).mark_bar(
        opacity=0.3,
        binSpacing=0
    ).encode(
        alt.X('Measurement:Q', bin=alt.Bin(maxbins=100)),
        alt.Y('count()', stack=None),
        alt.Color('Experiment:N')
    )


.. tab-set::

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

        .. code:: python


            import pandas as pd
            import altair as alt
            import numpy as np
            np.random.seed(42)

            # Generating Data
            source = pd.DataFrame({
                'Trial A': np.random.normal(0, 0.8, 1000),
                'Trial B': np.random.normal(-2, 1, 1000),
                'Trial C': np.random.normal(3, 2, 1000)
            })

            alt.Chart(source).transform_fold(
                ['Trial A', 'Trial B', 'Trial C'],
                as_=['Experiment', 'Measurement']
            ).mark_bar(
                opacity=0.3,
                binSpacing=0
            ).encode(
                alt.X('Measurement:Q').bin(maxbins=100),
                alt.Y('count()').stack(None),
                alt.Color('Experiment:N')
            )


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

        .. code:: python


            import pandas as pd
            import altair as alt
            import numpy as np
            np.random.seed(42)

            # Generating Data
            source = pd.DataFrame({
                'Trial A': np.random.normal(0, 0.8, 1000),
                'Trial B': np.random.normal(-2, 1, 1000),
                'Trial C': np.random.normal(3, 2, 1000)
            })

            alt.Chart(source).transform_fold(
                ['Trial A', 'Trial B', 'Trial C'],
                as_=['Experiment', 'Measurement']
            ).mark_bar(
                opacity=0.3,
                binSpacing=0
            ).encode(
                alt.X('Measurement:Q', bin=alt.Bin(maxbins=100)),
                alt.Y('count()', stack=None),
                alt.Color('Experiment:N')
            )
