SPB Git
2.2 KB · 38 lines python
1#!/usr/bin/env python32"""Figure ch13 — SCHL, Enquête sur les logements locatifs d'octobre 2025 (données RÉELLES, fichier rmr-quebec-2025-fr.xlsx) :3(a) loyer moyen d'octobre 2025 par RMR et par taille de logement ; (b) taux d'inoccupation d'octobre 2024 et d'octobre 2025.4Sortie : assets/figures/ch13/ch13-fig-schl-loyers.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, LARGEUR, fmt_dollars10import ch13_sources as cas111213def main():14    setup()15    t = cas.schl_rmr(); loy, inoc = t["loyer"], t["inoccupation"]16    rmrs = list(cas.RMR_SCHL); n = len(rmrs); x = np.arange(n)17    fig, (a, b) = plt.subplots(1, 2, figsize=(LARGEUR, 3.0), gridspec_kw={"width_ratios": [1.5, 1]})18    types = ["Studio", "1 chambre", "2 chambres", "3 chambres +"]; w = 0.219    for i, ty in enumerate(types):20        vals = [loy.loc[r, f"{ty}|2025"] for r in rmrs]21        a.bar(x + (i - 1.5) * w, vals, width=w, color=palette.cat[i], label=ty)22    a.set_xticks(x); a.set_xticklabels(rmrs, rotation=25, ha="right")23    a.yaxis.set_major_formatter(plt.FuncFormatter(fmt_dollars)); a.set_ylabel("Loyer moyen, octobre 2025")24    a.legend(fontsize=7, ncol=2, loc="upper right"); a.set_title("(a) Loyer moyen selon la taille du logement", loc="left", fontsize=8.5)25    a.set_ylim(0, 1950)26    for j, (an, col) in enumerate((("2024", palette.cat[5]), ("2025", palette.cat[0]))):27        vals = [inoc.loc[r, f"Tous|{an}"] for r in rmrs]28        b.bar(x + (j - 0.5) * 0.36, vals, width=0.36, color=col, label=f"Octobre {an}")29        for xi, v in zip(x + (j - 0.5) * 0.36, vals):30            b.text(xi, v + 0.06, f"{v:.1f}".replace(".", ","), ha="center", va="bottom", fontsize=6.5, color=palette.ink)31    b.set_xticks(x); b.set_xticklabels(rmrs, rotation=25, ha="right"); b.set_ylabel("Taux d'inoccupation (%)")32    b.set_ylim(0, 4.6); b.legend(fontsize=7, loc="upper right"); b.set_title("(b) Inoccupation, tous les appartements", loc="left", fontsize=8.5)33    out = savefig(fig, "ch13/ch13-fig-schl-loyers.pdf"); print("OK", out)343536if __name__ == "__main__":37    main()38
Files · 317d87e96c9fbe3102824f20418c9f14e795f254
Menu

Theme