BonQuery
  • Home
  • Dashboards
  • Left in the Cold
  • Data & Methods
    • About the Data
    • Daily Data Sources
    • Central Intake Validation
  • About
  • Accueil
  • Tableaux de bord
  • Laissés dans le froid
  • Données et méthodes
    • À propos des données
    • Sources des données quotidiennes
    • Validation de l’admission centrale
  • À propos
  • FR
  • EN

Comparaison annuelle cumulative

Réseau de refuges de Toronto — tendances cumulatives de l’année en cours

Comparaison annuelle cumulative du réseau de refuges de Toronto — vérifiez si l’année en cours suit un rythme supérieur ou inférieur aux années précédentes pour les catégories d’entrées et de sorties : nouvellement repérés et accès au logement permanent.

Auteur(-trice)

Miriam Marling

data = FileAttachment("../data/shelter_flow.json").json()
MON = ["janv.","févr.","mars","avr.","mai","juin",
       "juill.","août","sept.","oct.","nov.","déc."]
fmtN = d => d.toLocaleString("fr-CA")

reportingMonthOptions = data
  .filter(d => d.population_group === "All Population")
  .sort((a, b) => b.flow_date.localeCompare(a.flow_date))
  .map(d => {
    const [y, m] = d.flow_date.split("-").map(Number)
    return {
      label: new Date(y, m - 1, 15).toLocaleString("fr-CA", {month: "long", year: "numeric"}),
      value: d.flow_date
    }
  })
viewof reportingDate = Inputs.select(reportingMonthOptions, {
  label: "Mois de référence",
  format: d => d.label,
  value: reportingMonthOptions[0]
})
reportingYear  = +reportingDate.value.slice(0, 4)
reportingMonth = +reportingDate.value.slice(5, 7)

ytdComputed = {
  const rows = data
    .filter(d => d.population_group === "All Population")
    .filter(d => {
      const y = +d.flow_date.slice(0, 4)
      const m = +d.flow_date.slice(5, 7)
      return (y === reportingYear || y === reportingYear - 1) && m <= reportingMonth
    })
    .sort((a, b) => a.flow_date.localeCompare(b.flow_date))

  const accNI = {}, accMH = {}
  return rows.map(d => {
    const y = +d.flow_date.slice(0, 4)
    const m = +d.flow_date.slice(5, 7)
    accNI[y] = (accNI[y] || 0) + d.newly_identified
    accMH[y] = (accMH[y] || 0) + d.moved_to_housing
    return {
      year: y, month: m,
      monthLabel: MON[m - 1],
      yearLabel: String(y),
      isCurrentYear: y === reportingYear,
      ytd_ni: accNI[y],
      ytd_mh: accMH[y]
    }
  })
}

ytdSorted = ytdComputed
  .sort((a, b) => a.month - b.month || a.year - b.year)
  .map(d => ({...d, barLabel: `${d.monthLabel} ${d.yearLabel}`}))

ytdDomain = ytdSorted.map(d => d.barLabel)

Comparaison cumulative annuelle : Nouvellement repérés

Plot.plot({
  width,
  height: 60 + ytdSorted.length * 22,
  marginLeft: 100,
  marginRight: 80,
  x: {label: "Nouvellement repérés cumulatifs (ann. cours)", grid: true, tickFormat: fmtN},
  y: {label: null, domain: ytdDomain},
  color: {
    domain: [String(reportingYear - 1), String(reportingYear)],
    range: ["#FFB3C1", "#FF2D55"],
    legend: true
  },
  marks: [
    Plot.ruleX([0]),
    Plot.barX(ytdSorted, {x: "ytd_ni", y: "barLabel", fill: "yearLabel", tip: true,
                          insetTop: 1, insetBottom: 1}),
    Plot.text(ytdSorted, {
      x: "ytd_ni", y: "barLabel",
      text: d => d.ytd_ni.toLocaleString("fr-CA"),
      textAnchor: "start", dx: 5, fontSize: 11
    })
  ]
})

Comparaison cumulative annuelle : Accès au logement permanent

Plot.plot({
  width,
  height: 60 + ytdSorted.length * 22,
  marginLeft: 100,
  marginRight: 80,
  x: {label: "Accès au logement permanent cumulatif (ann. cours)", grid: true, tickFormat: fmtN},
  y: {label: null, domain: ytdDomain},
  color: {
    domain: [String(reportingYear - 1), String(reportingYear)],
    range: ["#AED5AE", "#5BA75B"],
    legend: true
  },
  marks: [
    Plot.ruleX([0]),
    Plot.barX(ytdSorted, {x: "ytd_mh", y: "barLabel", fill: "yearLabel", tip: true,
                          insetTop: 1, insetBottom: 1}),
    Plot.text(ytdSorted, {
      x: "ytd_mh", y: "barLabel",
      text: d => d.ytd_mh.toLocaleString("fr-CA"),
      textAnchor: "start", dx: 5, fontSize: 11
    })
  ]
})

Consulter les autres tableaux de bord :

  • Tendances historiques
  • Portrait mensuel

Ce tableau de bord est également disponible en tant que tableau de bord Oracle APEX reposant sur la même base de données — utile pour voir comment les mêmes données s’affichent dans la plateforme native à faible code d’Oracle, ou pour explorer le SQL et la configuration APEX sous-jacents.

Définitions clés

Catégories d’entrées (personnes intégrant le réseau de refuges ce mois-ci) :

  • Nouvellement repérés. Personnes entrant dans le réseau de refuges pour la première fois. Exception pour le groupe « Chronique » : dans ce cas, cette colonne comptabilise les personnes devenues en situation d’itinérance chronique au cours du mois de référence, quelle que soit la durée de leur utilisation antérieure du réseau.

Catégories de sorties (personnes quittant le réseau de refuges ce mois-ci) :

  • Accès au logement permanent. Personnes ayant quitté le réseau de refuges pour un logement permanent.

Définitions basées sur la page Données sur les flux du réseau de refuges de la Ville de Toronto.

Lire toutes les conclusions →

Source des données

Toutes les données proviennent du jeu de données Flux du réseau de refuges de Toronto de la Ville de Toronto, publié mensuellement sur le portail de données ouvertes de la Ville.

Contient des informations sous licence Licence du gouvernement ouvert – Toronto.

Retour au sommet
Need a safe place or support now? These contacts serve Toronto unless another area is named. BonQuery is an independent data project, not a service provider.
Assaulted Women's HelplineFree and confidential, anywhere in Ontario, 24/7 1-866-863-0511 Young people: Kids Help PhoneAges 5 to 29, confidential, 24/7. Call, or text CONNECT to 686868. 1-800-668-6868 Thinking about suicide, or worried about someone?Call or text 988 anywhere in Canada, 24/7. 988 Toronto emergency shelter line416-338-4766 Toronto shelter line, toll-free1-877-338-3398 Toronto mental-health crisis support211 Toronto street outreach311 Toronto 311 from outside city limits416-392-2489 City services TTY relay711 Immediate danger in Canada911 Toronto warming-centre status
Besoin d'un endroit sûr ou de soutien maintenant? Ces services desservent Toronto, sauf si une autre région est indiquée. BonQuery est un projet de données indépendant, pas un fournisseur de services.
Ligne d'aide aux femmes victimes de violenceGratuite et confidentielle, partout en Ontario, 24 h/24 et 7 j/7 1-866-863-0511 Jeunes : Jeunesse, J'écouteDe 5 à 29 ans, service confidentiel 24 h/24 et 7 j/7. Appelez ou textez le 686868. 1-800-668-6868 Vous pensez au suicide ou vous vous inquiétez pour quelqu'un?Appelez ou textez le 988 partout au Canada, 24 h/24 et 7 j/7. 988 Ligne des refuges d'urgence de Toronto416-338-4766 Ligne des refuges de Toronto, sans frais1-877-338-3398 Soutien en cas de crise de santé mentale à Toronto211 Intervention de rue à Toronto311 Toronto 311 depuis l'extérieur de la ville416-392-2489 Service de relais ATS de la Ville711 Danger immédiat au Canada911 État des centres de réchauffement de Toronto
 

Analyse indépendante d’intérêt public du réseau de refuges de Toronto.
© 2026 Miriam Marling · BonQuery