SPB Git
1.9 KB · 36 lines python
1#!/usr/bin/env python32"""Figure ch13 — trois indices souvent confondus, données RÉELLES de data/raw, rebasés T1 2017 = 100 :3IPC Québec (18-10-0004-01, v41691783), IPLN Montréal total maison et terrain (18-10-0205-01, v111955484),4IPCB Montréal bâtiments résidentiels (18-10-0289-01). Sortie : assets/figures/ch13/ch13-fig-indices.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 matplotlib.pyplot as plt9from traite.style import setup, palette, savefig, LARGEUR10import ch13_sources as cas111213def main():14    setup()15    t = cas.indices_compares()16    x = range(len(t))17    fig, ax = plt.subplots(figsize=(LARGEUR, 3.3))18    series = [("ipcb_mtl_resid_base2017", "IPCB, Montréal, bâtiments résidentiels (coût de construction)", 2.2, "-"),19              ("ipln_mtl_base2017", "IPLN, Montréal, maison et terrain (prix des logements neufs)", 1.6, "-"),20              ("ipc_quebec_base2017", "IPC, Québec, ensemble (prix à la consommation)", 1.6, "--")]21    for i, (col, lab, lw, ls) in enumerate(series):22        ax.plot(list(x), t[col], color=palette.cat[i], lw=lw, ls=ls, label=lab)23        ax.annotate(f"{t[col].iloc[-1]:.0f}", xy=(len(t) - 1, t[col].iloc[-1]), xytext=(4, 0), textcoords="offset points",24                    fontsize=7.5, va="center", color=palette.ink)25    ax.axhline(100, color=palette.ink2, lw=0.6, ls=":")26    ticks = [i for i, q in enumerate(t["trimestre"]) if q.endswith("T1")]27    ax.set_xticks(ticks); ax.set_xticklabels([t["trimestre"].iloc[i][:4] for i in ticks])28    ax.set_xlim(-0.5, len(t) + 1.5); ax.set_ylim(95, 190)29    ax.set_ylabel("Indice (T1 2017 = 100)")30    ax.legend(loc="upper left", fontsize=7.5)31    out = savefig(fig, "ch13/ch13-fig-indices.pdf"); print("OK", out)323334if __name__ == "__main__":35    main()36
Files · fd7f44c8789c8b7d81811c1898b290bc997b5c13
Menu

Theme