SPB Git
2.4 KB · 37 lines python
1#!/usr/bin/env python32"""Ch. 34, figure « exemple de calcul TAL » : composantes de l'augmentation mensuelle du logement 103 du cas 3 (DONNÉES3SYNTHÉTIQUES) selon la méthode en vigueur depuis le 1er janvier 2026 (pourcentages 2026), variante A (données du dossier) et4variante B (illustrative : taxes +8 %, assurances +10 %, immobilisations 85 000 $), avec l'écart au loyer de marché en repère.5Sortie : ch34-fig-calcul-tal.pdf."""6from __future__ import annotations7import sys, pathlib8sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1]))9import numpy as np10import matplotlib.pyplot as plt11from traite.style import setup, palette, savefig, LARGEUR12from cases import ch34_tal as c1314def main():15    setup()16    ex = c.exemple_fixation(103)17    comp = [("Pourcentage de base\n(3,1 % × 728 $)", "base"), ("Taxes municipales\n(au-delà de 3,1 %)", "m_taxes_mun"), ("Taxes scolaires\n(au-delà de 3,1 %)", "m_taxes_scol"),18            ("Assurances\n(au-delà de 3,1 %)", "m_assurances"), ("Dépenses d'immobilisation\n(5 % × part)", "m_immobilisations"), ("Total avant arrondi", "total_brut")]19    fig, ax = plt.subplots(figsize=(LARGEUR, 3.2))20    ys = np.arange(len(comp)); h = 0.3621    for k, (nom, col, lab) in enumerate((("A", palette.cat[0], "variante A — données du dossier (taxes et assurances en baisse, aucune immobilisation)"),22                                          ("B", palette.cat[1], "variante B — illustrative (taxes +8 %, assurances +10 %, travaux de 85 000 $)"))):23        vals = [ex[nom][key] for _, key in comp]24        bars = ax.barh(ys + (0.5 - k) * h, vals, h, color=col, label=lab)25        for bar, v in zip(bars, vals):26            ax.text(v + 0.5, bar.get_y() + bar.get_height() / 2, f"{v:.2f} $".replace(".", ","), va="center", fontsize=7, color=palette.ink)27    ax.set_yticks(ys); ax.set_yticklabels([n for n, _ in comp], fontsize=7.5); ax.invert_yaxis()28    ax.set_xlabel("Augmentation mensuelle (dollars par mois)")29    ax.set_xlim(0, 78)30    ax.text(30, 4.0, f"Repère : écart au loyer de marché du logement 103 = {ex['ecart_marche']:.0f} $/mois ({ex['ecart_marche_pct']*100:.1f} % du loyer), hors échelle".replace(".", ","),31            ha="left", va="center", fontsize=7, color=palette.ink2)32    ax.legend(loc="upper right", bbox_to_anchor=(1.0, 0.70), fontsize=7)33    savefig(fig, "ch34/ch34-fig-calcul-tal.pdf")3435if __name__ == "__main__":36    main()37
Files · 87c44d2be896891b2c9c8e7fa2e8f7fe990e491b
Menu

Theme