Zoom, cartouches and drop shadowΒΆ

A zoom window magnifies a dense area (the Paris region), the overseas departments are drawn as cartouches and box_shadow lifts the main map off the European background. All layers redraw automatically in the zoom window and the cartouches.

Hover a department to read its value.

Guadeloupe Martinique French Guiana Reunion Mayotte 100 km Source: Sante publique France (ODISSE) Deaths / 100,000 inhabitants 25 42 46 50 53 71 No data Mortality from heart failure Zoom on the Paris region, overseas in cartouches
from pathlib import Path

import pandas as pd

from mappyng import Map, BasemapLayer, ChoroplethLayer, VectorLayer
from mappyng.data import load_france_departments, load_france_regions, load_europe

europe = load_europe().to_crs(2154)
regions = load_france_regions().to_crs(2154)
deps = load_france_departments().to_crs(2154)
df = pd.read_csv(Path("data") / "cardio_mortalite_dep.csv", dtype={"code_dep": str})
deps = deps.merge(df, left_on="COD_GEO", right_on="code_dep", how="left")

bbox_metro = [90000, 6040000, 1280000, 7150000]
cartouches = {
    0: {"bbox": [-6890454, 1780151, -6799589, 1874186], "crs": 3857,
        "cartouche_title": "Guadeloupe", "cartouche_title_size": 7,
        "border_radius": 6, "box_shadow": True},
    1: {"bbox": [-6826862, 1609607, -6759494, 1685367], "crs": 3857,
        "cartouche_title": "Martinique", "cartouche_title_size": 7,
        "border_radius": 6, "box_shadow": True},
    2: {"bbox": [-6136680, 235261, -5707791, 671780], "crs": 3857,
        "cartouche_title": "French Guiana", "cartouche_title_size": 7,
        "border_radius": 6, "box_shadow": True},
    3: {"bbox": [6136383, -2448160, 6226316, -2366992], "crs": 3857,
        "cartouche_title": "Reunion", "cartouche_title_size": 7,
        "border_radius": 6, "box_shadow": True},
    4: {"bbox": [5006226, -1459183, 5050208, -1416184], "crs": 3857,
        "cartouche_title": "Mayotte", "cartouche_title_size": 7,
        "border_radius": 6, "box_shadow": True},
}

m = Map(europe, bbox=bbox_metro, width=900, height=1000, padding=25,
        facecolor="#dce6f0", border_radius=10,
        box_shadow={"dx": 3, "dy": 3, "blur": 6, "opacity": 0.2},
        cartouche_params=cartouches, cartouche_spacing=15)
m.add(BasemapLayer())
m.add(VectorLayer(regions, stroke="#4d4d4d", stroke_width=0.1, on_cartouches=True))
m.add_shadow(europe, {"query": "code_pays_iso3=='FRA'", "on_cartouches": True})

m.add_zoom({
    # Paris and the inner ring (75, 92, 93, 94) in Lambert-93. A tight
    # bbox over a large window magnifies this dense area about 11 times
    # relative to the main map.
    "bbox": [634000, 6841000, 674000, 6882000],
    "x": 705, "y": 160, "width": 128, "height": 140,
    "border_radius": 8,
    "box_shadow": {"dx": 2, "dy": 2, "blur": 4, "opacity": 0.3},
})
m.add(BasemapLayer())

m.add(ChoroplethLayer(deps, column="taux_mortalite", cmap="Reds",
                      method="Quantiles", num_classes=5, stroke_width=0.15,
                      legend={"title": "Deaths / 100,000 inhabitants",
                              "orientation": "horizontal", "decimals": 0,
                              "nodata_label": "No data"},
                      on_zoom=True, on_cartouches=True))
m.add(VectorLayer(regions, stroke="#333333", stroke_width=0.4, position="top",
                  on_zoom=True, on_cartouches=True))

m.title("Mortality from heart failure",
        subtitle="Zoom on the Paris region, overseas in cartouches")
m.scale_bar(length=100000, label="100 km", position={"x": 0.46, "y": 0.9},
            opacity=0.8)
m.source("Source: Sante publique France (ODISSE)")

# Hover tooltips. The gallery embeds an interactive SVG from this dict; the
# same call also yields a standalone HTML file.
TOOLTIP = {"columns": ["LIB_GEO", "taux_mortalite"],
           "aliases": {"LIB_GEO": "Department", "taux_mortalite": "Rate"}}
interactive = m.to_interactive(**TOOLTIP)
# interactive.save("layout.html")

Total running time of the script: (0 minutes 0.484 seconds)

Gallery generated by Sphinx-Gallery