SPB Git
2.4 KB · 39 lines python
1#!/usr/bin/env python32"""Figure ch43 — carte schématique des 48 immeubles du cas 4 (DONNÉES SYNTHÉTIQUES, coordonnées fictives autour des six RMR) :3taille ∝ valeur 2026, immeubles en zone inondable et terrains contaminés mis en évidence ; aucun fond de carte.4Sortie : assets/figures/ch43/ch43-fig-carte-cas4.pdf"""5import sys, pathlib6ROOT = pathlib.Path(__file__).resolve().parents[3]7sys.path.insert(0, str(ROOT / "analysis/python")); sys.path.insert(0, str(ROOT / "analysis/python/cases"))8import numpy as np, matplotlib.pyplot as plt9from traite.style import setup, palette, savefig, LARGEUR10from traite import cas4111213def main():14    setup()15    pf = cas4.charger()["portefeuille"]16    fig, ax = plt.subplots(figsize=(LARGEUR, 3.9))17    s = np.sqrt(pf["valeur_2026"] / 1e6) * 3818    base = pf[(pf["zone_inondable"] == 0) & (pf["contamination_sol"] == 0)]19    ax.scatter(base["lon"], base["lat"], s=s[base.index], color=palette.cat[0], alpha=0.55, linewidths=0, label="immeuble sans risque déclaré")20    fl = pf[pf["zone_inondable"] == 1]21    ax.scatter(fl["lon"], fl["lat"], s=s[fl.index], facecolor="none", edgecolor=palette.cat[1], linewidths=1.8, label="zone inondable (3)", zorder=4)22    so = pf[pf["contamination_sol"] == 1]23    ax.scatter(so["lon"], so["lat"], s=s[so.index], facecolor="none", edgecolor=palette.cat[2], linewidths=1.8, linestyle="--", label="contamination du sol (2)", zorder=4)24    for _, r in pf[(pf["zone_inondable"] == 1) | (pf["contamination_sol"] == 1)].iterrows():25        ax.annotate(f"{r['id_immeuble']} · {r['valeur_2026']/1e6:.1f} M$", (r["lon"], r["lat"]), xytext=(7, 5), textcoords="offset points", fontsize=7, color=palette.ink)26    centres = {"Montréal": (45.52, -73.60), "Québec": (46.81, -71.22), "Gatineau": (45.47, -75.70), "Sherbrooke": (45.40, -71.89), "Trois-Rivières": (46.35, -72.55), "Saguenay": (48.43, -71.07)}27    for nom, (la, lo) in centres.items():28        g = pf[pf["rmr"] == nom]29        ax.text(lo, la + 0.22, f"{nom}\n{len(g)} imm. · {g['valeur_2026'].sum()/1e6:.0f} M$", ha="center", fontsize=7.5, color=palette.ink2)30    ax.set_xlabel("Longitude (°, coordonnées fictives)"); ax.set_ylabel("Latitude (°)")31    ax.set_xlim(-76.4, -70.4); ax.set_ylim(44.9, 49.1); ax.set_aspect(1.35)32    ax.legend(loc="upper left", fontsize=7.5, markerscale=0.6)33    fig.tight_layout()34    savefig(fig, "ch43/ch43-fig-carte-cas4.pdf")353637if __name__ == "__main__":38    main()39
Files · 0b0a78499997700c9aa16d44b91243a1ef46c0bb
Menu

Theme