Européennes 2024 : le Rassemblement national progresse partout et gagne 2,5 millions de voix en cinq ans (2024)

  • Les Décodeurs
  • Élections européennes 2024

ParLéa Sanchez, Raphaëlle Aubert et Manon Romain

Publié le 10 juin 2024 à 15h42, modifié le 11 juin 2024 à 12h44

Temps de Lecture 1 min.

  • Partager
    • Partager sur Facebook
    • Envoyer par e-mail
    • Partager sur Linkedin

DécryptageLa liste menée par Jordan Bardella a obtenu 7,7millions de suffrages dimanche 9juin, et la hausse du RN n’épargne aucune zone géographique ou catégorie de commune.

Dimanche 9juin, le candidat du Rassemblement national (RN), Jordan Bardella, a savouré la première place obtenue par sa liste aux élections européennes en France, depuis son QG de campagne: «Les Français ont rendu leur verdict, et celui-ci est sans appel.» Le parti d’extrême droite a remporté 31,37% des suffrages exprimés, soit 8 points de plus que lors du dernier scrutin, en2019,et 21 points supplémentaires en vingt ans.

En total de bulletins exprimés, le RN a engrangé 7,7millions de suffrages, soit 2,5millions de plus qu’en2019et 6millions de plus qu’en2004. La liste de Jordan Bardella n’a toutefois pas battu les niveaux obtenus lors de l’élection présidentielle de 2022par Marine Le Pen (8,1millions au premier tour, 13,3millionsau second tour), marquée par une plus forte participation.

Participation aux élections européennes en France depuis 2004. Les données de population utilisées incluent Mayotte depuis 2014.

Rassemblement national

Autres partis

Blancs et nuls

Abstentions

`; document.body.appendChild(tooltip); tooltip.style.top = this.getBoundingClientRect().top - this.getBoundingClientRect().height + window.scrollY - tooltip.offsetHeight + Number( elmt.getAttribute('height') - 20) + 'px'; tooltip.style.left = this.getBoundingClientRect().left + this.getBoundingClientRect().width/2 - tooltip.getBoundingClientRect().width/2 + 'px'; tooltip.addEventListener('click', () => this.remove()); }) elmt.addEventListener('mouseout', function(){ let tooltip = document.querySelector('.tooltipdecodeurs'); if(tooltip != null) tooltip.remove(); }) }) } function getTextTT(d, indic_pop){ return `

Rassemblement national en ${d.data.date} : ${numberWithSpaceWithout(calc(d.data["RN_voix"], d.data.pop_all, d.data.Inscrits, indic_pop))} voix ${indic_pop == 0 ? "pour 100 habitants":""}

Soit ${numberWithSpaceWithout(Math.round(Number(d.data["RN_voix"])/d.data["Exprimés"] * 100 *100)/100)}% des votes exprimés et ${numberWithSpaceWithout(Math.round(Number(d.data["RN_voix"])/d.data["Inscrits"] * 100 *100)/100)}% des inscrits
${numberWithSpaceWithout( calc(d.data["Autres"], d.data.pop_all, d.data.Inscrits, indic_pop))} personne${numberWithSpaceWithout( calc(d.data["Autres"], d.data.pop_all, d.data.Inscrits, indic_pop)) > 1 ? "s": ""} ont voté pour un autre parti
${numberWithSpaceWithout( calc(d.data["Blancs et nuls"], d.data.pop_all, d.data.Inscrits, indic_pop))} personne${numberWithSpaceWithout( calc(d.data["Blancs et nuls"], d.data.pop_all, d.data.Inscrits, indic_pop)) > 1 ? "s": ""} ont voté blanc ou nul ${Number(d.data.date) >= 2014 ? "(" + numberWithSpaceWithout( calc(d.data["Blancs"], d.data.pop_all, d.data.Inscrits, indic_pop)) + " bulletin" + (numberWithSpaceWithout( calc(d.data["Blancs"], d.data.pop_all, d.data.Inscrits, indic_pop)) > 1 ? "s": "") + " blanc"+ (numberWithSpaceWithout( calc(d.data["Blancs"], d.data.pop_all, d.data.Inscrits,indic_pop)) > 1 ? "s": indic_pop == 1 ? "s": "") + " et " + numberWithSpaceWithout( calc(d.data["Nuls"], d.data.pop_all, d.data.Inscrits, indic_pop)) + " nul" + (numberWithSpaceWithout( calc(d.data["Nuls"], d.data.pop_all, d.data.Inscrits, indic_pop)) > 1 ? "s)": indic_pop == 1 ?"s)": ")") : ""}
${numberWithSpaceWithout( calc(d.data["Abstentions"], d.data.pop_all, d.data.Inscrits, indic_pop))} inscrits se sont abstenus
`; } function getA(selector){ return document.querySelectorAll(selector); } function inIframe () { try { return window.self !== window.top; } catch (e) { return true; }}

En pourcentage, la progression est encore plus saisissante. Le RN ne dépassait 25% des inscrits que dans 1500communes en2019, essentiellement des villages. C’est désormais le cas dans près de 9000communes: à Aigues-Mortes (Gard), par exemple, il recueille 49% des voix, soit 1950 suffrages sur les 7500 électeurs inscrits (contre 1360en2019, pour 7108inscrits).

Une hausse disparate, mais qui concerne une écrasante majorité des villes

Le parti de Marine Le Pen progresse partout en France, à quelques exceptions près, comme en Seine-Saint-Denis, où La France insoumise a réalisé des scores très élevés. Ainsi, à Clichy-sous-Bois (Seine-Saint-Denis), le RN obtient 16% des suffrages exprimés, en baisse de 6points par rapport à 2019, alors que La France insoumise en recueille 54%, en hausse de 41points en cinq ans.

${text.ev}

2024

2019

`}fillHtml();const deptDict = {"01": { "nom_d": "Ain", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"02": { "nom_d": "Aisne", "code_r": "032", "nom_r": "Hauts-de-France" },"03": { "nom_d": "Allier", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"04": { "nom_d": "Alpes-de-Haute-Provence", "code_r": "093", "nom_r": "Provence-Alpes-Côte d'Azur" },"05": { "nom_d": "Hautes-Alpes", "code_r": "093", "nom_r": "Provence-Alpes-Côte d'Azur" },"06": { "nom_d": "Alpes-Maritimes", "code_r": "093", "nom_r": "Provence-Alpes-Côte d'Azur" },"07": { "nom_d": "Ardèche", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"08": { "nom_d": "Ardennes", "code_r": "044", "nom_r": "Grand-Est" },"09": { "nom_d": "Ariège", "code_r": "076", "nom_r": "Occitanie" },"10": { "nom_d": "Aube", "code_r": "044", "nom_r": "Grand-Est" },"11": { "nom_d": "Aude", "code_r": "076", "nom_r": "Occitanie" },"12": { "nom_d": "Aveyron", "code_r": "076", "nom_r": "Occitanie" },"13": { "nom_d": "Bouches-du-Rhône", "code_r": "093", "nom_r": "Provence-Alpes-Côte d'Azur" },"14": { "nom_d": "Calvados", "code_r": "028", "nom_r": "Normandie" },"15": { "nom_d": "Cantal", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"16": { "nom_d": "Charente", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"17": { "nom_d": "Charente-Maritime", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"18": { "nom_d": "Cher", "code_r": "024", "nom_r": "Centre-Val de Loire" },"19": { "nom_d": "Corrèze", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"21": { "nom_d": "Côte-d'Or", "code_r": "027", "nom_r": "Bourgogne-Franche-Comté" },"22": { "nom_d": "Côtes-d'Armor", "code_r": "053", "nom_r": "Bretagne" },"23": { "nom_d": "Creuse", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"24": { "nom_d": "Dordogne", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"25": { "nom_d": "Doubs", "code_r": "027", "nom_r": "Bourgogne-Franche-Comté" },"26": { "nom_d": "Drôme", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"27": { "nom_d": "Eure", "code_r": "028", "nom_r": "Normandie" },"28": { "nom_d": "Eure-et-Loir", "code_r": "024", "nom_r": "Centre-Val de Loire" },"29": { "nom_d": "Finistère", "code_r": "053", "nom_r": "Bretagne" },"30": { "nom_d": "Gard", "code_r": "076", "nom_r": "Occitanie" },"31": { "nom_d": "Haute-Garonne", "code_r": "076", "nom_r": "Occitanie" },"32": { "nom_d": "Gers", "code_r": "076", "nom_r": "Occitanie" },"33": { "nom_d": "Gironde", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"34": { "nom_d": "Hérault", "code_r": "076", "nom_r": "Occitanie" },"35": { "nom_d": "Ile-et-Vilaine", "code_r": "053", "nom_r": "Bretagne" },"36": { "nom_d": "Indre", "code_r": "024", "nom_r": "Centre-Val de Loire" },"37": { "nom_d": "Indre-et-Loire", "code_r": "024", "nom_r": "Centre-Val de Loire" },"38": { "nom_d": "Isère", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"39": { "nom_d": "Jura", "code_r": "027", "nom_r": "Bourgogne-Franche-Comté" },"40": { "nom_d": "Landes", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"41": { "nom_d": "Loir-et-Cher", "code_r": "024", "nom_r": "Centre-Val de Loire" },"42": { "nom_d": "Loire", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"43": { "nom_d": "Haute-Loire", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"44": { "nom_d": "Loire-Atlantique", "code_r": "052", "nom_r": "Pays-de-la-Loire" },"45": { "nom_d": "Loiret", "code_r": "024", "nom_r": "Centre-Val de Loire" },"46": { "nom_d": "Lot", "code_r": "076", "nom_r": "Occitanie" },"47": { "nom_d": "Lot-et-Garonne", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"48": { "nom_d": "Lozère", "code_r": "076", "nom_r": "Occitanie" },"49": { "nom_d": "Maine-et-Loire", "code_r": "052", "nom_r": "Pays-de-la-Loire" },"50": { "nom_d": "Manche", "code_r": "028", "nom_r": "Normandie" },"51": { "nom_d": "Marne", "code_r": "044", "nom_r": "Grand-Est" },"52": { "nom_d": "Haute-Marne", "code_r": "044", "nom_r": "Grand-Est" },"53": { "nom_d": "Mayenne", "code_r": "052", "nom_r": "Pays-de-la-Loire" },"54": { "nom_d": "Meurthe-et-Moselle", "code_r": "044", "nom_r": "Grand-Est" },"55": { "nom_d": "Meuse", "code_r": "044", "nom_r": "Grand-Est" },"56": { "nom_d": "Morbihan", "code_r": "053", "nom_r": "Bretagne" },"57": { "nom_d": "Moselle", "code_r": "044", "nom_r": "Grand-Est" },"58": { "nom_d": "Nièvre", "code_r": "027", "nom_r": "Bourgogne-Franche-Comté" },"59": { "nom_d": "Nord", "code_r": "032", "nom_r": "Hauts-de-France" },"60": { "nom_d": "Oise", "code_r": "032", "nom_r": "Hauts-de-France" },"61": { "nom_d": "Orne", "code_r": "028", "nom_r": "Normandie" },"62": { "nom_d": "Pas-de-Calais", "code_r": "032", "nom_r": "Hauts-de-France" },"63": { "nom_d": "Puy-de-Dôme", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"64": { "nom_d": "Pyrénées-Atlantiques", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"65": { "nom_d": "Hautes-Pyrénées", "code_r": "076", "nom_r": "Occitanie" },"66": { "nom_d": "Pyrénées-Orientales", "code_r": "076", "nom_r": "Occitanie" },"67": { "nom_d": "Bas-Rhin", "code_r": "044", "nom_r": "Grand-Est" },"68": { "nom_d": "Haut-Rhin", "code_r": "044", "nom_r": "Grand-Est" },"69": { "nom_d": "Rhône", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"70": { "nom_d": "Haute-Saône", "code_r": "027", "nom_r": "Bourgogne-Franche-Comté" },"71": { "nom_d": "Saône-et-Loire", "code_r": "027", "nom_r": "Bourgogne-Franche-Comté" },"72": { "nom_d": "Sarthe", "code_r": "052", "nom_r": "Pays-de-la-Loire" },"73": { "nom_d": "Savoie", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"74": { "nom_d": "Haute-Savoie", "code_r": "084", "nom_r": "Auvergne-Rhône-Alpes" },"75": { "nom_d": "Paris", "code_r": "011", "nom_r": "Ile-de-France" },"76": { "nom_d": "Seine-Maritime", "code_r": "028", "nom_r": "Normandie" },"77": { "nom_d": "Seine-et-Marne", "code_r": "011", "nom_r": "Ile-de-France" },"78": { "nom_d": "Yvelines", "code_r": "011", "nom_r": "Ile-de-France" },"79": { "nom_d": "Deux-Sèvres", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"80": { "nom_d": "Somme", "code_r": "032", "nom_r": "Hauts-de-France" },"81": { "nom_d": "Tarn", "code_r": "076", "nom_r": "Occitanie" },"82": { "nom_d": "Tarn-et-Garonne", "code_r": "076", "nom_r": "Occitanie" },"83": { "nom_d": "Var", "code_r": "093", "nom_r": "Provence-Alpes-Côte d'Azur" },"84": { "nom_d": "Vaucluse", "code_r": "093", "nom_r": "Provence-Alpes-Côte d'Azur" },"85": { "nom_d": "Vendée", "code_r": "052", "nom_r": "Pays-de-la-Loire" },"86": { "nom_d": "Vienne", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"87": { "nom_d": "Haute-Vienne", "code_r": "075", "nom_r": "Nouvelle-Aquitaine" },"88": { "nom_d": "Vosges", "code_r": "044", "nom_r": "Grand-Est" },"89": { "nom_d": "Yonne", "code_r": "027", "nom_r": "Bourgogne-Franche-Comté" },"90": { "nom_d": "Territoire de Belfort", "code_r": "027", "nom_r": "Bourgogne-Franche-Comté" },"91": { "nom_d": "Essonne", "code_r": "011", "nom_r": "Ile-de-France" },"92": { "nom_d": "Hauts-de-Seine", "code_r": "011", "nom_r": "Ile-de-France" },"93": { "nom_d": "Seine-Saint-Denis", "code_r": "011", "nom_r": "Ile-de-France" },"94": { "nom_d": "Val-de-Marne", "code_r": "011", "nom_r": "Ile-de-France" },"95": { "nom_d": "Val-d'Oise", "code_r": "011", "nom_r": "Ile-de-France" },"2A": { "nom_d": "Corse-du-Sud", "code_r": "094", "nom_r": "Corse" },"2B": { "nom_d": "Haute-Corse", "code_r": "094", "nom_r": "Corse" },"971": { "nom_d": "Guadeloupe", "code_r": "", "nom_r": "" },"972": { "nom_d": "Martinique", "code_r": "", "nom_r": "" },"973": { "nom_d": "Guyane", "code_r": "", "nom_r": "" },"974": { "nom_d": "La Réunion", "code_r": "", "nom_r": "" },"975": { "nom_d": "Saint-Pierre-et-Miquelon", "code_r": "", "nom_r": "" },"976": { "nom_d": "Mayotte", "code_r": "", "nom_r": "" },"977": { "nom_d": "Saint-Martin/Saint-Barthélemy", "code_r": "", "nom_r": "" },"978": { "nom_d": "Saint-Martin/Saint-Barthélemy", "code_r": "", "nom_r": "" },"986": { "nom_d": "Wallis et Futuna", "code_r": "", "nom_r": "" },"987": { "nom_d": "Polynésie française", "code_r": "", "nom_r": "" },"988": { "nom_d": "Nouvelle-Calédonie", "code_r": "", "nom_r": "" },"99": { "nom_d": "Français de l’étranger", "code_r": "", "nom_r": "" }};const days = ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'];const months = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'];const formatNb = (x) => {let loc = lang == 'fr' ? 'fr-FR' : 'en-GB';return x.toLocaleString(loc);}// Everything we need for canvas tooltiplet booleanPointInPolygon = turf.booleanPointInPolygon.default;const delaunayNextring = (delaunay, currentZone, kernel) => {if (!kernel) kernel = [];let nextring = currentZone.flatMap((d, i, self) => [...delaunay.neighbors(d)].filter(e => !self.includes(e) && !kernel.includes(e)));return [...new Set(nextring)];};// Define app and device situationlet inApp = window.location.href.match(/apps.([a-z]+-)?lemonde.fr/);let isMobile = window.innerWidth <= 820 ? true : false;if (!isMobile && window.innerHeight < 600) {document.querySelector(".eu_map_restrainer").style.width = '78%';}d3.json("https://assets-decodeurs.lemonde.fr/decodeurs/assets/20240325_europeennes/communes_2024.json").then((comTopo) => {// 0. Stop spinnerdocument.querySelector(".eu_map_loader").style.display = "none";document.querySelector(".eu_map_restrainer").style.display = "block";document.querySelector(".eu_map_instrtxt").innerHTML = isMobile ? `${text.zoom_m}` : `${text.zoom}`;// 1. Prepare geo dataconst communes = topojson.feature(comTopo, comTopo.objects.a_com);const dept = topojson.feature(comTopo, comTopo.objects.a_dept);const features = new Map(communes.features.map(d => [d.properties.c, d]));const bordersFrance = topojson.merge(comTopo, comTopo.objects.a_dept.geometries);const bordersDept = topojson.mesh(comTopo, comTopo.objects.a_dept, (a, b) => a !== b);const separators = topojson.feature(comTopo, comTopo.objects.l_separateur);// 2. Define dimensionslet dimensions = {width: document.querySelector(".eu_map").offsetWidth,margin: {top: 0,right: 0,bottom: 0,left: 0,},};dimensions.height = dimensions.width * 1.1;// 3. Define projectionlet projDef = (w, h, layer) => {return d3.geoIdentity().reflectY(true).fitExtent([[dimensions.margin.left, dimensions.margin.top], [w - dimensions.margin.right, h - dimensions.margin.bottom]], layer);};let proj = projDef(dimensions.width, dimensions.height, bordersFrance);const pathGenerator = d3.geoPath(proj);// 4. Format datalet tooltip = d3.select(".eu_map_tooltip");let centroids = communes.features.map(f => d3.geoPath(proj).centroid(f));let delaunay = d3.Delaunay.from(centroids);let comData;let currentDept;let zoomedIn = false;const resMap = new Map(Object.entries(communes_RN).map(d => [d[0], d]));let categ = 'd';//const colorScale = d3.scaleThreshold([25, 35, 45, 55, 65, 75], ['#f5f5dc', '#dfd5b6', '#c9b591', '#b3976e', '#9b794c', '#845d2b', '#6b4207']);const colorScale = d3.scaleThreshold([25, 35, 45, 55, 65, 75], ['#e9e0e2', '#d5bfbb', '#c19e95', '#ac7e71', '#965f4e', '#7f412d', '#66230e']);const colorScaleD = d3.scaleThreshold([-20, -15, -10, -5, 0, 5, 10, 15, 20], ['#003c30', '#01665e', '#35978f', '#80cdc1', '#c7eae5', '#f6e8c3', '#dfc27d', '#bf812d', '#8c510a', '#543005']);let dataC = communes.features.map(d => {// com: commune INSEE number// sc17: percentage score in 2017// sc22: percentage score in 2022// d: percentage pt difference// a: abstentionlet com = d.properties.c == 'fe' ? '99' : d.properties.c;//let com = d.properties.c;let a;let ft = d;let res;let sc19;let sc24;let scd;let c19 = nuanceslm.ncmap.couleur || "#f6f6f6";let c24 = nuanceslm.ncmap.couleur || "#f6f6f6";let cd = nuanceslm.ncmap.couleur || "#f6f6f6";//let s;try {res = resMap.get(com);}catch (error) {console.log("e");}if (com == '99') console.log(res)// Handle communes mortes de la Meuseif (typeof (res) == 'undefined') {//console.log("undef", com)if (com === '55039' || com === '55239' || com === '55189' || com === '55307' || com === '55139' || com === '55050')n = 104;else {//console.log("undefined!", com, res)n = 103;}w = null;}else if (res[1] === null) {console.log("null", res[1])n = 105;w = null;}// TODO Other conditionselse {sc19 = res[1]['2019'];sc24 = res[1]['2024'];scd = res[1]['evol'];c19 = sc19 == 'd' || sc19 == 'u' || sc19 == 'n' ? '#BDC1C8' : colorScale(sc19);c24 = sc24 == 'd' || sc24 == 'u' || sc24 == 'n' ? '#BDC1C8' : colorScale(sc24);cd = scd == 'd' || scd == 'u' || scd == 'n' ? '#BDC1C8' : colorScaleD(scd);a = res[1]['a'];}return {com,ft: ft,c19,c24,cd,sc19,sc24,scd,a}}).sort((a, b) => a['sc' + categ] < b['sc' + categ] ? -1 : 1);// Draw legendlet svgLeg;function drawLegend({color,height = 16,divWidth,tickSize = 6,marginTop = 0,marginBottom = 5,} = {}) {let tickFormat = d3.format("+");if (svgLeg) {svgLeg.remove();}svgLeg = d3.select(".eu_legend_wrapper").append("svg").attr("preserveAspectRatio", "xMinYMin meet").attr("viewBox", `0 0 ${divWidth} ${height}`).attr("class", "p_map_leg").attr("overflow", "visible").attr("aria-label", "Légende");let tickAdjust = g => g.selectAll(".tick line").attr("stroke", "#2A3439").attr("y1", marginTop + marginBottom - height);const thresholds = color.domain();let x = d3.scaleLinear().domain([-1, color.range().length - 1]).rangeRound(divWidth >= 530 ? [divWidth / 3, divWidth - (divWidth / 3)] : [divWidth / 4, divWidth - (divWidth / 4)]);svgLeg.append("g").selectAll("rect").data(color.range()).join("rect").attr("x", (d, i) => x(i - 1)).attr("y", marginTop).attr("width", (d, i) => x(i) - x(i - 1)).attr("height", height - marginTop - marginBottom).attr("fill", d => d);const tickValues = d3.range(thresholds.length);const thresholdFormat = i => {return categ == 'd' ? tickFormat(thresholds[i], i) : thresholds[i] + ' %';}let g = svgLeg.append("g").attr("transform", `translate(0, ${height - marginBottom})`).call(d3.axisBottom(x).tickFormat(thresholdFormat).tickSize(tickSize).tickValues(tickValues)).call(tickAdjust).call(g => g.select(".domain").remove());}// Launch a first timedrawLegend({color: categ == 'd' ? colorScaleD : colorScale,divWidth: dimensions.width,});// 5. Init canvaslet comCanvas = document.querySelector("canvas[data-layer='com']");let dpr = window.devicePixelRatio;comCanvas.width = dimensions.width * dpr;comCanvas.height = dimensions.height * dpr;let comContext = comCanvas.getContext('2d', { willReadFrequently: true });comContext.scale(dpr, dpr);// 6. Init svg (frame and borders)const svg = d3.select(".eu_map_wrapper").append("svg").attr("preserveAspectRatio", "xMinYMin meet").attr("viewBox", `0 0 ${dimensions.width} ${dimensions.height}`).attr("class", "eu_map_svgcontent").attr("aria-label", "Carte communes européennes 2024");const bg = svg.append("g").append("rect").attr("width", dimensions.width).attr("height", dimensions.height).attr("class", "eu_map_svgbg").attr("fill", "transparent").on("click", resetMe);const g = svg.append("g");// 7. Draw zonesconst borderColor = "var(--eu-dept-border-color)";const comStroke = dimensions.width * 0.0025;const bdStroke = dimensions.width * 0.0012;const bdStrokeZoomed = dimensions.width * 0.005;const zones = g.append("g").selectAll(".eu_map_zone").data(dept.features).enter().append("path").attr("class", "eu_map_zone").attr("name", d => d.properties.d).attr("stroke-linejoin", "round").attr("d", pathGenerator).attr("fill", "transparent");// 8. Draw bordersconst intBorders = g.append("path").attr("class", "eu_map_border").datum(bordersDept).attr("fill", "none").attr("stroke", borderColor).attr("stroke-width", bdStroke).attr("stroke-linejoin", "round").attr("d", pathGenerator).attr("pointer-events", "none");const extBorders = g.append("path").attr("class", "eu_map_border").datum(bordersFrance).attr("fill", "none").attr("stroke", borderColor).attr("stroke-width", bdStroke).attr("stroke-linejoin", "round").attr("d", pathGenerator).attr("pointer-events", "none");let comBorders;// Draw separators const sepLines = g.append("path").datum(separators).attr("class", "l_map_lines").attr("stroke-linejoin", "round").attr("d", pathGenerator).attr("stroke-linejoin", "round").attr("stroke", "var(--eu-map-sep)").attr("stroke-width", 1);// Add overseas legendconst textOverseas = g.append("text").attr("y", isMobile ? dimensions.height * 0.824 : dimensions.height * 0.822).attr("x", dimensions.width * 0.15).attr("fill", "var(--eu-map-sep-text)").attr("font-size", isMobile ? "11px" : "12px").attr("pointer-events", "none").text(`${text.ov}`);if (!isMobile) {const textFe = g.append("text").attr("y", dimensions.height * 0.822).attr("x", dimensions.width * 0.745).attr("fill", "var(--eu-map-sep-text)").attr("font-size", isMobile ? "11px" : "12px").attr("pointer-events", "none").text(`Français`);const textFeM = g.append("text").attr("y", dimensions.height * 0.845).attr("x", dimensions.width * 0.745).attr("fill", "var(--eu-map-sep-text)").attr("font-size", isMobile ? "11px" : "12px").attr("pointer-events", "none").text(`de l’étranger`);}else {const textFe = g.append("text").attr("y", dimensions.height * 0.824).attr("x", dimensions.width * 0.745).attr("fill", "var(--eu-map-sep-text)").attr("font-size", isMobile ? "11px" : "12px").attr("pointer-events", "none").text(`Français`);const textFeM = g.append("text").attr("y", dimensions.height * 0.85).attr("x", dimensions.width * 0.745).attr("fill", "var(--eu-map-sep-text)").attr("font-size", isMobile ? "11px" : "12px").attr("pointer-events", "none").text(`de l’étranger`);}// 9. Draw communesconst drawMap = (x = 0, y = 0, k = 1) => {comContext.clearRect(0, 0, comCanvas.width, comCanvas.height);if (k > 1) {comContext.save();comContext.translate(x, y);comContext.scale(k, k);comContext.rect(0, 0, dimensions.width, dimensions.height);comContext.clip();}let lastColor;let geoPath = d3.geoPath(proj, comContext);dataC.forEach(d => {comContext.beginPath();if (d['c' + categ] != lastColor) {comContext.fillStyle = d['c' + categ];}geoPath(d.ft);lastColor = d['c' + categ];comContext.fill();});if (k > 1) {comContext.restore();}}let topPos = window.scrollY + document.querySelector(".eu_placeholder_title").getBoundingClientRect().top - 300;let bottomPos = window.scrollY + document.querySelector(".eu_map_wrapper").getBoundingClientRect().bottom + 200;const handleMouseEvents = () => {if (isMobile) {d3.select(".eu_map_tooltipcross").on("click", onMouseLeave);svg.selectAll(".eu_map_zone").on("mouseleave", onMouseLeave).on("click touch", clicked);d3.select(".eu_map_wrapper").on("touchleave mouseleave", onMouseLeave);d3.select(".eu_peripheral_top").on("click", onMouseLeave);d3.select(".eu_map_accessibility").on("click", onMouseLeave);/*if (!inApp) {window.onscroll = () => {let currentPos = window.pageYOffset;if ((currentPos > bottomPos && currentPos > topPos) || (currentPos < topPos && currentPos < bottomPos)) {tooltip.transition().duration(50).style("transform", "translate(0, 150px)").transition().delay(50).style("display", "none");}}}*/}else {d3.select(".eu_map_wrapper").on("mousemove", moveDesktop).on("mouseleave", onMouseLeave);d3.selectAll(".eu_map_zone").on("mouseleave", onMouseLeave).on("click", clicked);}}// Manage zoom on clickconst zoom = d3.zoom().on("zoom", zoomed);async function clicked(event, d) {document.querySelector(".eu_map_instrtxt").innerHTML = isMobile ? `${text.cta_com_m}` : `${text.cta_com}`;if (isMobile) {tooltip.transition().duration(200).style("transform", "translate(0, 100px)").transition().delay(200).style("display", "none");}elsetooltip.style("display", "none");const [[x0, y0], [x1, y1]] = pathGenerator.bounds(d);event.stopPropagation();let dNb = d.properties.d == '978' ? '977' : d.properties.d;if (dNb == 'fe') dNb = '99';if (zoomedIn == true && currentDept == dNb && dNb != '977') return;document.querySelector(".eu_map_deptname").innerHTML = (lang == 'en' && dNb == '99') ? `${text.tt_fe}` : deptDict[dNb].nom_d;d3.select(".eu_map_reset").transition().duration(50).style("opacity", 1).transition().duration(100).style("display", "block");if (comBorders) comBorders.transition().duration(50).attr("stroke", null).remove();// Adapt zoom max to device and dept shapelet zoomMax = 100;if (dNb == 75 || dNb == 92 || dNb == 93 || dNb == 94 || dNb == 90)zoomMax = 50;else if (dNb == '02')zoomMax = isMobile ? 9.5 : 100;else if (dNb == 25)zoomMax = isMobile ? 10 : 11;else if (dNb == 31)zoomMax = isMobile ? 8.5 : 11;else if (dNb == 67)zoomMax = 11;else if (dNb == '2B')zoomMax = isMobile ? 8.5 : 100;svg.transition().duration(750).call(zoom.transform,d3.zoomIdentity.translate(dimensions.width / 2, dimensions.height / 2).scale(Math.min(zoomMax, 1 / Math.max((x1 - x0) / dimensions.width, (y1 - y0) / dimensions.height))).translate(-(x0 + x1) / 2, -(y0 + y1) / 2),);try {comData = await d3.json(`https://assets-decodeurs.lemonde.fr/decodeurs/elections_snippets/europeennes/exports2024TEST/export_communes${dNb}.json`);}catch (error) {comData = undefined;}currentDept = dNb;const extract = {type: "FeatureCollection",features: communes.features.filter(k => k.properties.d == d.properties.d)};comBorders = g.append("g").selectAll(".eu_map_com").data(extract.features).enter().append("path").attr("class", "eu_map_com").attr("fill", "none").attr("name", d => d.properties.d).attr("d", pathGenerator);if (isMobile) {comBorders.on("click mouseover", mouseEnterCom).on("mouseout", onMouseLeave);}else {d3.select(".eu_map_wrapper").on("touchmove mousemove", null);comBorders.on("mouseover", mouseEnterCom).on("mouseout", onMouseLeave);//comBorders.on("click", clickRedirect);}zones.attr("fill", "var(--eu-map-overlay)");d3.select(this).attr("fill", "none");zoomedIn = true;}// Zoom and redrawlet k = 1;let x = 0;let y = 0;function zoomed(event) {let { transform } = event;g.attr("transform", transform);// Scale strokesif (zoomedIn === true) {intBorders.transition().duration(50).ease(d3.easeCubicInOut).attr("stroke-width", bdStrokeZoomed / transform.k);extBorders.attr("stroke-width", bdStrokeZoomed / transform.k);}else {intBorders.attr("stroke-width", bdStroke / transform.k);extBorders.attr("stroke-width", bdStroke / transform.k);}if (comBorders)comBorders.attr("stroke-width", comStroke / transform.k).attr("stroke", borderColor).attr("stroke-opacity", 0.5).attr("stroke-linejoin", "round");drawMap(transform.x, transform.y, transform.k);x = transform.x;y = transform.y;k = transform.k;}// Reset map on clickfunction resetMe() {if (zoomedIn == false) return;document.querySelector(".eu_map_instrtxt").innerHTML = isMobile ? `${text.zoom_m}` : `${text.zoom}`;// Reset svg additionsif (comBorders) comBorders.transition().duration(50).attr("stroke", null).remove();zones.attr("fill", "transparent");// Hide arrowd3.selectAll(".eu_map_reset").transition().duration(100).style("opacity", 0);// Dezoomsvg.transition().duration(750).call(zoom.transform,d3.zoomIdentity,d3.zoomTransform(svg.node()).invert([dimensions.width / 2, dimensions.height / 2]));// Reset mouse eventshandleMouseEvents();// Hide tooltipif (isMobile) {tooltip.transition().duration(200).style("transform", "translate(0, 100px)").transition().duration(200).style("display", "none");}else {tooltip.style("display", "none");}zoomedIn = false;}// Manage tooltipsfunction onMouseLeave(event, d) {if (isMobile) {tooltip.transition().duration(200).style("transform", "translate(0, 100px)").transition().delay(200).style("display", "none");}else {tooltip.style("display", "none");}d3.select(this).attr("stroke-width", comStroke / k);}const percentage = (value, total) => {return (Math.round(((value / total) * 100) * 10) / 10).toString().replace('.', ',');};// Zoomed in tooltipfunction mouseEnterCom(event, datum) {d3.select(this).attr("stroke-width", comStroke * 2 / k);const toFind = datum.properties.c == 'fe' ? '99' : datum.properties.c;const link = toFind === 'fe' ? "https://www.lemonde.fr/resultats-europeennes-2024/outre-mer/francais-de-l-etranger/" : `https://www.lemonde.fr/resultats-europeennes-2024/commune-${toFind}/`;/*let locData;locData = comData === undefined ? undefined : comData[toFind];*/let locData = dataC.find(d => d.com == toFind);let score = locData['sc' + categ];let title = `

${currentDept == '99' ? `${text.tt_fe}` : `${datum.properties.l}`}

`;let content = '';if (toFind === '55039' || toFind === '55239' || toFind === '55189' || toFind === '55307' || toFind === '55139' || toFind === '55050') {content = `${text.tt_meuse}`;}else if (locData == undefined || score == undefined) {content = `${text.tt_nores}`;if (!isMobile) {content += `

${text.tt_nores}

`}}else if (score == 'n') {content = `

${text.tt_novote}

`;}/*else if (score == 'a' || score == 'c') {if (categ == '19' || categ == '24') {content = `

${text.tt_cc}

`;}else {content = `

${text.tt_cc2}

`;}}*/else {if (categ == '19' || categ == '24') {content = `

En ${['20' + categ]}, le RN a obtenu ${new String(score).replace('.', ',')}% des suffrages exprimés.

`;if (categ == '24') {content += `

L'abstention est de ${new String(Math.round(locData['a'] * 100) / 100).replace('.', ',')}%.

`}}else {let rise = score >= 0? score == 0? ` n'a pas changé`: `a augmenté de ${new String(score).replace('.', ',')}points`: `a baissé de ${new String(score).replace('-', '').replace('.', ',')}points`;content = `

Le score du RN ${rise} entre 2019 et 2024.

`;}}// Fill and showtooltip.select('.eu_map_tooltiptitle').attr('aria-label', `Titre infobulle`).html(title);tooltip.select('.eu_map_tooltipvalue').attr('aria-label', 'Contenu infobulle').html(content);if (!isMobile) {const [x, y] = d3.pointer(event, svg.node());tooltip.style("transform", `translate(`+ `calc(-50% + ${x >= Math.round(dimensions.width * 0.5) ? x - 70 : x + 70}px),`+ `calc(-110% + ${y}px))`);}if (isMobile) {tooltip.style("display", "block").transition().duration(200).style("transform", "translate(0, -100px)");}else {tooltip.style("display", "block");}}// Desktop non-zoomed tooltipfunction moveDesktop(e) {let geoPath = d3.geoPath(proj, comContext);let ptMouse, l, j, iter = 0;const [x, y] = this ? d3.pointer(e) : [200, 200];j = delaunay.find(x, y, j);//let isHovering = comCanvas.getContext('2d').getImageData(x, y, 1, 1).data[3] > 60;let isHovering = true;if (isHovering) {ptMouse = proj.invert([x, y]);let inPolygon = booleanPointInPolygon(ptMouse, communes.features[j]);if (!inPolygon && j != 1) {let currentZone = [j], kernel = [], nextZone;while (l === undefined && iter++ < 4) {nextZone = delaunayNextring(delaunay, currentZone, kernel);l = nextZone.find(k => booleanPointInPolygon(ptMouse, communes.features[k]));kernel = kernel.concat(currentZone);currentZone = nextZone;}if (l !== undefined) j = l;else j = undefined;}if (j === undefined) {tooltip.style("display", "none");return;}if (j == 1) j = 99;if (j !== undefined) {let com;let deptNb;let comName;let data;if (j == 99) {com = communes.features.find(d => d.properties.c == 'fe');deptNb = j;comName = com.properties.l;data = dataC.find(d => d.com == '99');}else {com = communes.features[j].properties;deptNb = com.c.slice(0, -3);if (deptNb !== '2A' && deptNb !== '2B' && parseInt(deptNb) >= 96) deptNb = com.c.slice(0, -2);comName = com.l;data = dataC.find(d => d.com == com.c);}score = data['sc' + categ];let deptName = deptDict[deptNb].nom_d;let title = deptNb == 99 ? `${text.tt_fe}` : `${comName} (${deptName})`;let content;if (data.n == 103)content = `${text.tt_nores}`;else if (data.n == 104)content = `${text.tt_meuse}`;else if (data.n == 105)content = `${text.tt_cc}`;else {if (score == 'u' || score == 'undefined')content = "Le résultat du RN n’est pas disponible.";else if (categ == '19' || categ == '24') {content = `

Au second tour, le RN a obtenu ${new String(score).replace('.', ',')}% des suffrages exprimés.

Cliquez pour voir plus de détails

`;}else {let plural = Math.abs(score > 1) ? 's' : '';let rise = score >= 0 ? score == 0 ? "n’a pas changé" : `a augmenté de ${new String(score).replace('.', ',')}point${plural}` : `a baissé de ${new String(score).replace('-', '').replace('.', ',')}point${plural}`;content = `

Le score du RN ${rise} entre 2019 et de 2024.

${text.tt_cta_dz}

`;}}tooltip.select('.eu_map_tooltiptitle').attr('aria-label', 'Infobulle').html(`${title}`);tooltip.select('.eu_map_tooltipvalue').html(`

${content}

`);tooltip.style("transform", `translate(`+ `calc(-50% + ${x >= Math.round(dimensions.width * 0.3) ? (x >= Math.round(dimensions.width * 0.6)) ? x - 70 : x : x + 70}px),`+ `calc(-110% + ${y}px)`+ `)`).style("display", "block");}else {tooltip.style("display", "none");}}else {tooltip.style("display", "none");}}// Watch categ buttonsdocument.querySelectorAll(".eu_map_select").forEach(button => {button.onclick = (e) => {let newCateg = button.getAttribute("name");if (newCateg != categ) {categ = newCateg;dataC.sort((a, b) => a['c' + categ] < b['c' + categ] ? -1 : 1);document.querySelectorAll(".eu_map_select").forEach(b => {b.classList.remove("eu_map_selected");});button.classList.add("eu_map_selected");drawMap(x, y, k);drawLegend({color: categ == 'd' ? colorScaleD : colorScale,divWidth: dimensions.width,});}}});// Watch reset buttondocument.querySelector(".eu_map_reset").onclick = (e) => {resetMe();}// Watch visibility changedocument.onvisibilitychange = async (evt) => {if (document.visibilityState === "hidden") {console.log("hidden");} else {console.log("visible");drawMap(x, y, k);}};drawMap();handleMouseEvents();}).catch((error) => {throw error;});}initMap("fr");

Cette progression ne se cantonne pas à une ou des zones géographiques, ni à un profil spécifique de commune. Elle se manifeste ainsi dans une partie de la zone d’attraction de Paris, où les scores recueillis par le RN sont d’ordinaire moins élevés qu’ailleurs.

Pourcentage du vote RN sur les inscrits par commune, selon leur rattachement à une aire d'attractivité. Exemple : la commune périurbaine de Pacé est rattachée à la zone d'attractivité de Rennes, qui se trouve dans la catégorie des aires de plus de 700 000 habitants.

Scrutin de 2019

Scrutin de 2024

Source: ministère de l'intérieur, Insee et Le Monde

${legend[d.cat]}, le vote pour le RN correspond à ${numberWithSpaceScatter(mobileHisto, Math.round(d.rn/d.inscrits * 100))}% des inscrits.`}function numberWithSpaceScatter(mobileHisto, x) { if (mobileHisto == true && x >1000000){ x = Math.round(x/1000000); return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ").replace(".", ",") + "M"; } else return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ").replace(".", ",");}function forEach(arr, fn){ for(let i = 0, l = arr.length; i this.remove()); }) elmt.addEventListener('mouseout', function(){ const tooltip = document.querySelector('.tooltipdecodeurs'); if(tooltip != null) tooltip.remove(); }) }) } function getA(selector){ return document.querySelectorAll(selector); }

Toutefois, les municipalités dans lesquelles le vote RN augmente le plus restent les communes isolées et rurales, décrites par l’Institut national de la statistique et des études économiques (Insee) comme «hors attraction des villes» ou celles qui font partie de la «couronne» d’une aire d’attractivité. Par exemple, à Belbeuf, commune située à environ 10kilomètres de Rouen (Seine-Martime), le Rassemblement national est passé de moins de 10% en2019 des inscrits à 15% en2024.

Pourcentage du vote RN sur les inscrits par commune, selon le type de municipalité. Plus une catégorie se trouve à droite du «pôle principal», moins les communes de cette catégorie sont sous l'influence d'un pôle.

Scrutin de 2019

Scrutin de 2024

Source: ministère de l'intérieur, Insee et Le Monde
Les catégories «commune-centre» et «autre commune du pôle principal» de l'Insee sont ici réunie dans la colonne «pôle principal».

${legendHisto2[d.cat]}, le vote pour le RN correspond à ${numberWithSpaceScatter(mobileHisto2, Math.round(d.rn/d.inscrits * 100))}% des inscrits.`}function numberWithSpaceScatter(mobileHisto2, x) { if (mobileHisto2 == true && x >1000000){ x = Math.round(x/1000000); return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ").replace(".", ",") + "M"; } else return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ").replace(".", ",");}function forEach(arr, fn){ for(let i = 0, l = arr.length; i this.remove()); }) elmt.addEventListener('mouseout', function(){ const tooltip = document.querySelector('.tooltipdecodeurs'); if(tooltip != null) tooltip.remove(); }) }) } function getA(selector){ return document.querySelectorAll(selector); }

Dans les semaines à venir, des analyses scientifiques plus poussées seront nécessaires pour explorer les différents facteurs du vote RN. Parmi les corrélations notables, on repère une plus forte hausse du parti d’extrême droite dans les municipalités où le taux de pauvreté est inférieur ou égal à 10%.

Pourcentage du vote RN sur les inscrits par commune, selon le taux de pauvreté en 2021 (en abscisse). Attention : pour les petites communes, nous ne disposons pas de données.

Scrutin de 2019

Scrutin de 2024

Source: ministère de l'intérieur, Insee et Le Monde

${legendHisto3[d.cat]}, le vote pour le RN correspond à ${numberWithSpaceScatterHisto3(mobileHisto3, Math.round(d.rn/d.inscrits * 100))}% des inscrits.`}function numberWithSpaceScatterHisto3(mobileHisto3, x) { if (mobileHisto3 == true && x >1000000){ x = Math.round(x/1000000); return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ").replace(".", ",") + "M"; } else return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ").replace(".", ",");}function forEach(arr, fn){ for(let i = 0, l = arr.length; i this.remove()); }) elmt.addEventListener('mouseout', function(){ const tooltip = document.querySelector('.tooltipdecodeurs'); if(tooltip != null) tooltip.remove(); }) }) } function getA(selector){ return document.querySelectorAll(selector); }
Européennes 2024 : le Rassemblement national progresse partout et gagne 2,5 millions de voix en cinq ans (2024)

References

Top Articles
Latest Posts
Article information

Author: Arline Emard IV

Last Updated:

Views: 6086

Rating: 4.1 / 5 (52 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Arline Emard IV

Birthday: 1996-07-10

Address: 8912 Hintz Shore, West Louie, AZ 69363-0747

Phone: +13454700762376

Job: Administration Technician

Hobby: Paintball, Horseback riding, Cycling, Running, Macrame, Playing musical instruments, Soapmaking

Introduction: My name is Arline Emard IV, I am a cheerful, gorgeous, colorful, joyous, excited, super, inquisitive person who loves writing and wants to share my knowledge and understanding with you.