
:orphan:
:html_theme.sidebar_secondary.remove:

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

.. _gallery_london_tube:


London Tube Lines
=================
This example shows the London tube lines against the background of the
borough boundaries. It is based on the vega-lite example at
https://vega.github.io/vega-lite/examples/geo_layer_line_london.html.


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


    import altair as alt
    from altair.datasets import data

    boroughs = alt.topo_feature(data.london_boroughs.url, 'boroughs')
    tubelines = alt.topo_feature(data.london_tube_lines.url, 'line')
    centroids = data.london_centroids.url

    background = alt.Chart(boroughs).mark_geoshape(
        stroke='white',
        strokeWidth=2
    ).encode(
        color=alt.value('#eee'),
    ).properties(
        width=700,
        height=500
    )

    labels = alt.Chart(centroids).mark_text().encode(
        longitude='cx:Q',
        latitude='cy:Q',
        text='bLabel:N',
        size=alt.value(8),
        opacity=alt.value(0.6)
    ).transform_calculate(
        "bLabel", "indexof (datum.name,' ') > 0  ? substring(datum.name,0,indexof(datum.name, ' ')) : datum.name"
    )

    line_scale = alt.Scale(domain=["Bakerloo", "Central", "Circle", "District", "DLR",
                                   "Hammersmith & City", "Jubilee", "Metropolitan", "Northern",
                                   "Piccadilly", "Victoria", "Waterloo & City"],
                           range=["rgb(137,78,36)", "rgb(220,36,30)", "rgb(255,206,0)",
                                  "rgb(1,114,41)", "rgb(0,175,173)", "rgb(215,153,175)",
                                  "rgb(106,114,120)", "rgb(114,17,84)", "rgb(0,0,0)",
                                  "rgb(0,24,168)", "rgb(0,160,226)", "rgb(106,187,170)"])

    lines = alt.Chart(tubelines).mark_geoshape(
        filled=False,
        strokeWidth=2
    ).encode(
        alt.Color(
            'id:N',
            legend=alt.Legend(
                title=None,
                orient='bottom-right',
                offset=0
            ),
            scale=line_scale
        )
    )

    background + labels + lines


.. tab-set::

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

        .. code:: python


            import altair as alt
            from altair.datasets import data

            boroughs = alt.topo_feature(data.london_boroughs.url, 'boroughs')
            tubelines = alt.topo_feature(data.london_tube_lines.url, 'line')
            centroids = data.london_centroids.url

            background = alt.Chart(boroughs, width=700, height=500).mark_geoshape(
                stroke='white',
                strokeWidth=2
            ).encode(
                color=alt.value('#eee'),
            )

            labels = alt.Chart(centroids).mark_text().encode(
                longitude='cx:Q',
                latitude='cy:Q',
                text='bLabel:N',
                size=alt.value(8),
                opacity=alt.value(0.6)
            ).transform_calculate(
                "bLabel", "indexof (datum.name,' ') > 0  ? substring(datum.name,0,indexof(datum.name, ' ')) : datum.name"
            )

            line_scale = alt.Scale(domain=["Bakerloo", "Central", "Circle", "District", "DLR",
                                           "Hammersmith & City", "Jubilee", "Metropolitan", "Northern",
                                           "Piccadilly", "Victoria", "Waterloo & City"],
                                   range=["rgb(137,78,36)", "rgb(220,36,30)", "rgb(255,206,0)",
                                          "rgb(1,114,41)", "rgb(0,175,173)", "rgb(215,153,175)",
                                          "rgb(106,114,120)", "rgb(114,17,84)", "rgb(0,0,0)",
                                          "rgb(0,24,168)", "rgb(0,160,226)", "rgb(106,187,170)"])

            lines = alt.Chart(tubelines).mark_geoshape(
                filled=False,
                strokeWidth=2
            ).encode(
                alt.Color('id:N')
                    .title(None)
                    .legend(orient='bottom-right', offset=0)
                    .scale(line_scale)
            )

            background + labels + lines


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

        .. code:: python


            import altair as alt
            from altair.datasets import data

            boroughs = alt.topo_feature(data.london_boroughs.url, 'boroughs')
            tubelines = alt.topo_feature(data.london_tube_lines.url, 'line')
            centroids = data.london_centroids.url

            background = alt.Chart(boroughs).mark_geoshape(
                stroke='white',
                strokeWidth=2
            ).encode(
                color=alt.value('#eee'),
            ).properties(
                width=700,
                height=500
            )

            labels = alt.Chart(centroids).mark_text().encode(
                longitude='cx:Q',
                latitude='cy:Q',
                text='bLabel:N',
                size=alt.value(8),
                opacity=alt.value(0.6)
            ).transform_calculate(
                "bLabel", "indexof (datum.name,' ') > 0  ? substring(datum.name,0,indexof(datum.name, ' ')) : datum.name"
            )

            line_scale = alt.Scale(domain=["Bakerloo", "Central", "Circle", "District", "DLR",
                                           "Hammersmith & City", "Jubilee", "Metropolitan", "Northern",
                                           "Piccadilly", "Victoria", "Waterloo & City"],
                                   range=["rgb(137,78,36)", "rgb(220,36,30)", "rgb(255,206,0)",
                                          "rgb(1,114,41)", "rgb(0,175,173)", "rgb(215,153,175)",
                                          "rgb(106,114,120)", "rgb(114,17,84)", "rgb(0,0,0)",
                                          "rgb(0,24,168)", "rgb(0,160,226)", "rgb(106,187,170)"])

            lines = alt.Chart(tubelines).mark_geoshape(
                filled=False,
                strokeWidth=2
            ).encode(
                alt.Color(
                    'id:N',
                    legend=alt.Legend(
                        title=None,
                        orient='bottom-right',
                        offset=0
                    ),
                    scale=line_scale
                )
            )

            background + labels + lines
