Estimation de la demande potentielle en logements à horizon 2035
Sur le graphe suivant, la fourchette de sensibilité aux hypothèses a été représentée pour chacune des 34 zones. Selon les territoires, on constate que cette sensibilité aux hypothèses est plus ou moins importante ; généralement, plus le territoire est urbain, plus la fourchette est grande.
Code
data_DPL_scenarios_t =transpose (data_DPL_scenarios)// mettre à jour librairie plot pour faire des round cornersPlot =import("https://cdn.jsdelivr.net/npm/@observablehq/plot/+esm")// doc :// https://observablehq.com/@observablehq/input-tableInputs.table(data_DPL_scenarios_t,{header: {"valeur":"Nb de logements / an" },format: {"valeur": d =>Math.round(d) }})
Code
logt_comm_periode = { let result = [];for (let i =0; i <34; i++) { result.push( {"Libellé zonage": data_DPL_scenarios_t[i]["Libellé zonage"],periode:"lgts commencés 2015-2019","Logts ordinaires commencés /an": data_DPL_scenarios_t[i]["Logts ordinaires commencés /an sur [2015-2019]"] }, {"Libellé zonage": data_DPL_scenarios_t[i]["Libellé zonage"],periode:"lgts commencés 2020-2023 (Sitadel)","Logts ordinaires commencés /an": data_DPL_scenarios_t[i]["Logts ordinaires commencés /an sur [2020-2023]"] } ); }return result;}
Code
Plot.plot({marginLeft:50,marginRight:100,marginTop:50,marginBottom:150,height:600,width:1100,style: {fontSize:12, },y: {domain:[-200,2600],ticks:14,tickFormat: d => d.toLocaleString('fr-FR'),grid:true,label:"Nb de logements / an"},x: {tickRotate:-30,label:"",inset:10},color: {legend:true,domain: ["lgts commencés 2015-2019","lgts commencés 2020-2023 (Sitadel)"],// les catégories de fillrange: ["orange","#16fa53"] // les couleurs choisies },subtitle:"Estimation de la demande potentielle en logements à horizon 2035 (moyenne annuelle)",marks: [ Plot.barY(data_DPL_scenarios_t, {x:"Libellé zonage",y1:"Tendanciel BAS",y2:"Tendanciel HAUT",fill:"steelblue",r:3 }), Plot.dot(data_DPL_scenarios_t, {x:"Libellé zonage",y:"Tendanciel BAS",fill:"steelblue",symbol:"diamond",r:5,tip: {format: { y: d =>Math.round(d).toLocaleString('fr-FR'), } } }), Plot.dot(data_DPL_scenarios_t, {x:"Libellé zonage",y:"Tendanciel HAUT",fill:"steelblue",symbol:"diamond",r:5,tip: {format: { y: d =>Math.round(d).toLocaleString('fr-FR'), } } }), Plot.dot(data_DPL_scenarios_t, {x:"Libellé zonage",y:"Tendanciel CENTRAL",fill:"black",symbol:"star",sort: {x:"y"},r:4,tip: {format: { y: d =>Math.round(d).toLocaleString('fr-FR'), } } }), Plot.ruleY([0]), Plot.text(data_DPL_scenarios_t, {x:"Libellé zonage",y:"Tendanciel CENTRAL",//dx: 5,dy:-10,text: d =>Math.round(d["Tendanciel CENTRAL"]).toLocaleString('fr-FR'),fill:"black",fontSize:10 }), Plot.tickY(logt_comm_periode, {x:"Libellé zonage",y:"Logts ordinaires commencés /an",stroke:"periode",strokeWidth:2,fill:"periode",tip:true }) ]})
Décomposition par effets
Si l’on s’intéresse au scénario central, on peut connaître de façon plus précise l’origine de cette demande. Le graphique suivant présente les résultats du scénario central pour le zonage d’étude (34 zones) et permet d’apprécier le « profil » de la demande pour chaque territoire. Certaines composantes peuvent diminuer le résultat, cela résulte soit d’un effet démographique négatif, soit d’une possible mobilisation du parc existant pour répondre aux besoins en résidences principales.
Code
data_long_central_ojs =transpose (data_long_central)// doc :// https://observablehq.com/@observablehq/input-tableInputs.table(data_long_central_ojs,{header: {"valeur":"Nb de logements / an" },format: {"valeur": d =>Math.round(d) }})
Décomposition de l’évolution annuelle du nombre de ménages en Normandie selon le type d’effet (scénario central)
Code
colorPalette = { return {"Ménage par an – effet nouvelle population":"#83caff",// Bleu"Ménage par an – effet déformation pyramide des âges":"#9999ff",// Violet"Ménage par an – effet évolution des modes de cohabitation":"#198a8a",// Cyan"Renouvellement par an":"#c5000b",// Rouge"Vacance par an":"#ffd320",// Jaune"Résidences Secondaires et Logts Occasion. par an":"#81d41a"// Vert}};Plot.plot({marginLeft:50,marginRight:100,marginBottom:150,height:600,width:1200,style: {fontSize:12, },x: {tickRotate:-30,label:""},y: {grid:true,label:"Nb de logts / an",tickFormat: y => y.toLocaleString('fr-FR') },color: {legend:true,domain:Object.keys(colorPalette),range:Object.values(colorPalette)},marks: [ Plot.barY(data_long_central_ojs.filter(d => d.effet!="Moyenne annuelle Demande Potentielle logements"), {x:"Libellé zonage",y:"valeur",fill:"effet",tip:true, }), Plot.ruleY([0]),// Cercle pour le fond de texte Plot.dotY(data_long_central_ojs.filter(d => d.effet=="Moyenne annuelle Demande Potentielle logements"), {x:"Libellé zonage",y:"valeur",fill:"white",stroke:"black",sort: {x:"y"},r:12 }), Plot.text(data_long_central_ojs.filter(d => d.effet=="Moyenne annuelle Demande Potentielle logements"), {x:"Libellé zonage",y:"valeur",text: d =>Math.round(d.valeur).toLocaleString('fr-FR'),fontSize:10,textAnchor:"middle" }) ]})
L’origine de la demande potentielle en logements diffère fortement d’une zone à l’autre.
À l’échelle de chaque zonage d’étude, la part de la demande potentielle en logements liée à l’évolution des ménages (= résidences principales) et celle liée à l’évolution du parc représentent respectivement :
bertin =require("bertin") // le ggplot de la carto en javascript// on charge le géojsonzonage =FileAttachment("data/zonage.geojson").json()// import {view} from "@neocartocnrs/geoverview"// view(zonage)// on récupère la donnée préparée avec R et on passe d'un format colonne à un format javascriptdata_wide_ojs =transpose(data_wide)