#!/usr/bin/env python3 """Figure ch13 — SCHL, Enquête sur les logements locatifs d'octobre 2025 (données RÉELLES, fichier rmr-quebec-2025-fr.xlsx) : (a) loyer moyen d'octobre 2025 par RMR et par taille de logement ; (b) taux d'inoccupation d'octobre 2024 et d'octobre 2025. Sortie : assets/figures/ch13/ch13-fig-schl-loyers.pdf""" import sys, pathlib ROOT = pathlib.Path(__file__).resolve().parents[3] sys.path.insert(0, str(ROOT / "analysis/python")); sys.path.insert(0, str(ROOT / "analysis/python/cases")) import numpy as np, matplotlib.pyplot as plt from traite.style import setup, palette, savefig, LARGEUR, fmt_dollars import ch13_sources as cas def main(): setup() t = cas.schl_rmr(); loy, inoc = t["loyer"], t["inoccupation"] rmrs = list(cas.RMR_SCHL); n = len(rmrs); x = np.arange(n) fig, (a, b) = plt.subplots(1, 2, figsize=(LARGEUR, 3.0), gridspec_kw={"width_ratios": [1.5, 1]}) types = ["Studio", "1 chambre", "2 chambres", "3 chambres +"]; w = 0.2 for i, ty in enumerate(types): vals = [loy.loc[r, f"{ty}|2025"] for r in rmrs] a.bar(x + (i - 1.5) * w, vals, width=w, color=palette.cat[i], label=ty) a.set_xticks(x); a.set_xticklabels(rmrs, rotation=25, ha="right") a.yaxis.set_major_formatter(plt.FuncFormatter(fmt_dollars)); a.set_ylabel("Loyer moyen, octobre 2025") 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) a.set_ylim(0, 1950) for j, (an, col) in enumerate((("2024", palette.cat[5]), ("2025", palette.cat[0]))): vals = [inoc.loc[r, f"Tous|{an}"] for r in rmrs] b.bar(x + (j - 0.5) * 0.36, vals, width=0.36, color=col, label=f"Octobre {an}") for xi, v in zip(x + (j - 0.5) * 0.36, vals): b.text(xi, v + 0.06, f"{v:.1f}".replace(".", ","), ha="center", va="bottom", fontsize=6.5, color=palette.ink) b.set_xticks(x); b.set_xticklabels(rmrs, rotation=25, ha="right"); b.set_ylabel("Taux d'inoccupation (%)") 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) out = savefig(fig, "ch13/ch13-fig-schl-loyers.pdf"); print("OK", out) if __name__ == "__main__": main()