
:orphan:
:html_theme.sidebar_secondary.remove:

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

.. _gallery_scatter_qq:


Quantile-Quantile Plot
----------------------
A quantile-quantile plot comparing input data to theoretical distributions.


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



    import altair as alt
    from altair.datasets import data

    source = data.normal_2d.url

    base = alt.Chart(source).transform_quantile(
        'u',
        step=0.01,
        as_ = ['p', 'v']
    ).transform_calculate(
        uniform = 'quantileUniform(datum.p)',
        normal = 'quantileNormal(datum.p)'
    ).mark_point().encode(
        alt.Y('v:Q')
    )

    base.encode(x='uniform:Q') | base.encode(x='normal:Q')
    # 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.normal_2d.url

            base = alt.Chart(source).transform_quantile(
                'u',
                step=0.01,
                as_ = ['p', 'v']
            ).transform_calculate(
                uniform = 'quantileUniform(datum.p)',
                normal = 'quantileNormal(datum.p)'
            ).mark_point().encode(
                alt.Y('v:Q')
            )

            base.encode(x='uniform:Q') | base.encode(x='normal:Q')


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

        .. code:: python



            import altair as alt
            from altair.datasets import data

            source = data.normal_2d.url

            base = alt.Chart(source).transform_quantile(
                'u',
                step=0.01,
                as_ = ['p', 'v']
            ).transform_calculate(
                uniform = 'quantileUniform(datum.p)',
                normal = 'quantileNormal(datum.p)'
            ).mark_point().encode(
                alt.Y('v:Q')
            )

            base.encode(x='uniform:Q') | base.encode(x='normal:Q')
            # No channel encoding options are specified in this chart
            # so the code is the same as for the method-based syntax.
