{"id":61418,"date":"2026-07-30T19:36:35","date_gmt":"2026-07-30T17:36:35","guid":{"rendered":"https:\/\/alertes-meteo.com\/?page_id=61418"},"modified":"2026-07-30T19:43:44","modified_gmt":"2026-07-30T17:43:44","slug":"temperatures-moyennes-en-hiver","status":"publish","type":"page","link":"https:\/\/alertes-meteo.com\/index.php\/climatologie\/temperatures-moyennes-en-hiver\/","title":{"rendered":"Temp\u00e9ratures moyennes en hiver"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1575px;margin-left: calc(-5% \/ 2 );margin-right: calc(-5% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-blend:overlay;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.375%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:2.375%;--awb-width-medium:100%;--awb-spacing-right-medium:2.375%;--awb-spacing-left-medium:2.375%;--awb-width-small:100%;--awb-spacing-right-small:2.375%;--awb-spacing-left-small:2.375%;\"><div class=\"fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1\"><div class=\"w-full\">\n<h1 style=\"text-align: center;\">Temp\u00e9ratures moyennes en Hiver<\/h1>\n<\/div>\n<\/div><p style=\"margin:18px 0; color:#dc2626; font-size:18px; font-weight:800; line-height:1.5; text-align:center;\">\n  Afficher et survolez le diagramme pour voir le d\u00e9tail des temp\u00e9ratures.\n<\/p>\n\n\n<!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"twinter-widget\" data-twinter-chart>\n  <div class=\"twinter-header\">\n    <h2>Temp\u00e9rature moyenne observ\u00e9e en hiver depuis 1921 (France)<\/h2>\n    <p>Valeurs en degr\u00e9s Celsius<\/p>\n  <\/div>\n\n  <div\n    class=\"twinter-reference\"\n    role=\"note\"\n    aria-label=\"Normale 1991-2020 : 5,83 degr\u00e9s Celsius\"\n  >\n    <span>Normale 1991-2020<\/span>\n    <strong>5,83\u00a0\u00b0C<\/strong>\n  <\/div>\n\n  <div class=\"twinter-toggle-row\">\n    <button\n      class=\"twinter-toggle\"\n      data-twinter-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"twinter-toggle-track\" aria-hidden=\"true\">\n        <span class=\"twinter-toggle-dot\"><\/span>\n      <\/span>\n      <span data-twinter-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"twinter-content\" data-twinter-content hidden>\n    <div class=\"twinter-selection\" data-twinter-selection aria-live=\"polite\">\n      Survolez ou touchez la courbe pour afficher la temp\u00e9rature d\u2019un hiver.\n    <\/div>\n\n    <div class=\"twinter-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"twinter-stage\">\n        <svg\n          class=\"twinter-svg\"\n          data-twinter-svg\n          viewBox=\"0 0 1240 520\"\n          role=\"img\"\n          tabindex=\"0\"\n          aria-labelledby=\"twinter-title twinter-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"twinter-title\">\n            Temp\u00e9rature moyenne observ\u00e9e en hiver en France, de 1921-1922 \u00e0 2025-2026\n          <\/title>\n          <desc id=\"twinter-desc\">\n            Courbe bleue interactive de la temp\u00e9rature moyenne nationale observ\u00e9e\n            en hiver. La ligne pointill\u00e9e repr\u00e9sente la normale 1991-2020 de 5,83 \u00b0C.\n            Les fl\u00e8ches gauche et droite permettent de parcourir les hivers.\n          <\/desc>\n        <\/svg>\n        <div class=\"twinter-tooltip\" data-twinter-tooltip role=\"status\" aria-hidden=\"true\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"twinter-legend\" aria-label=\"L\u00e9gende\">\n      <span><i class=\"twinter-line-key\"><\/i> Temp\u00e9rature moyenne observ\u00e9e<\/span>\n      <span><i class=\"twinter-normal-key\"><\/i> Normale 1991-2020 : 5,83\u00a0\u00b0C<\/span>\n    <\/div>\n\n    <p class=\"twinter-note\">\n      Hiver m\u00e9t\u00e9orologique : d\u00e9cembre, janvier et f\u00e9vrier. Une saison est\n      indiqu\u00e9e par ses deux ann\u00e9es, par exemple 2025-2026.\n    <\/p>\n\n    <p class=\"twinter-source\">\n      Source : M\u00e9t\u00e9o-France \u2022 Indicateur thermique national\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .twinter-widget,\n  .twinter-widget * {\n    box-sizing: border-box;\n  }\n\n  .twinter-widget {\n    --twinter-blue: #2f80ed;\n    --twinter-blue-dark: #145eb8;\n    --twinter-blue-soft: #eaf4ff;\n    --twinter-grid: #dfe6ee;\n    --twinter-ink: #17202a;\n    --twinter-muted: #5d6874;\n    width: 100%;\n    max-width: 1280px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--twinter-ink);\n    background: #ffffff;\n    border: 1px solid #e7ecf2;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .twinter-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .twinter-header p {\n    margin: 8px 0 0;\n    color: var(--twinter-muted);\n    font-size: 15px;\n  }\n\n  .twinter-reference {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin-top: 18px;\n    padding: 10px 14px;\n    color: #184d82;\n    background: var(--twinter-blue-soft);\n    border: 1px solid #bfdcff;\n    border-radius: 11px;\n    font-size: 14px;\n  }\n\n  .twinter-reference span {\n    font-weight: 700;\n  }\n\n  .twinter-reference strong {\n    color: #0f559f;\n    font-size: 17px;\n  }\n\n  .twinter-toggle-row {\n    margin-top: 16px;\n  }\n\n  .twinter-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n  }\n\n  .twinter-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .twinter-toggle:focus-visible,\n  .twinter-svg:focus-visible {\n    outline: 3px solid rgba(47, 128, 237, 0.28);\n    outline-offset: 3px;\n  }\n\n  .twinter-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .twinter-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .twinter-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .twinter-toggle.is-active .twinter-toggle-track {\n    background: var(--twinter-blue-dark);\n  }\n\n  .twinter-toggle.is-active .twinter-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .twinter-content[hidden] {\n    display: none;\n  }\n\n  .twinter-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .twinter-selection strong {\n    color: #0f559f;\n  }\n\n  .twinter-selection.has-value {\n    color: #24415f;\n    background: #eef7ff;\n    border-left-color: var(--twinter-blue);\n  }\n\n  .twinter-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    padding-top: 6px;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .twinter-stage {\n    position: relative;\n    width: 100%;\n    min-width: 940px;\n  }\n\n  .twinter-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    cursor: crosshair;\n  }\n\n  .twinter-grid-line {\n    stroke: var(--twinter-grid);\n    stroke-width: 1;\n  }\n\n  .twinter-axis-line {\n    stroke: #aeb8c3;\n    stroke-width: 1.2;\n  }\n\n  .twinter-y-label,\n  .twinter-x-label,\n  .twinter-axis-unit {\n    fill: #66717d;\n    font-family: Arial, Helvetica, sans-serif;\n    font-size: 12px;\n  }\n\n  .twinter-y-label {\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .twinter-x-label {\n    text-anchor: middle;\n  }\n\n  .twinter-axis-unit {\n    font-weight: 700;\n  }\n\n  .twinter-area {\n    pointer-events: none;\n  }\n\n  .twinter-curve {\n    fill: none;\n    stroke: var(--twinter-blue);\n    stroke-width: 2;\n    stroke-linecap: round;\n    stroke-linejoin: round;\n    pointer-events: none;\n  }\n\n  .twinter-normal-line {\n    stroke: #ed8b2f;\n    stroke-width: 1.7;\n    stroke-dasharray: 8 7;\n    pointer-events: none;\n  }\n\n  .twinter-marker-line {\n    stroke: rgba(47, 128, 237, 0.42);\n    stroke-width: 1;\n    stroke-dasharray: 4 4;\n    pointer-events: none;\n  }\n\n  .twinter-marker {\n    fill: #ffffff;\n    stroke: var(--twinter-blue-dark);\n    stroke-width: 3;\n    pointer-events: none;\n  }\n\n  .twinter-overlay {\n    fill: transparent;\n    pointer-events: all;\n    touch-action: pan-x pan-y;\n  }\n\n  .twinter-tooltip {\n    position: absolute;\n    z-index: 3;\n    width: 224px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(16, 49, 82, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(9, 35, 61, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .twinter-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .twinter-tooltip strong,\n  .twinter-tooltip span {\n    display: block;\n  }\n\n  .twinter-tooltip strong {\n    margin-bottom: 4px;\n    font-size: 14px;\n  }\n\n  .twinter-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 12px 22px;\n    margin-top: 14px;\n    color: #53606d;\n    font-size: 13px;\n  }\n\n  .twinter-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n  }\n\n  .twinter-line-key,\n  .twinter-normal-key {\n    display: inline-block;\n    width: 29px;\n    height: 0;\n  }\n\n  .twinter-line-key {\n    border-top: 2px solid var(--twinter-blue);\n  }\n\n  .twinter-normal-key {\n    border-top: 2px dashed #ed8b2f;\n  }\n\n  .twinter-note,\n  .twinter-source {\n    margin: 12px 0 0;\n    color: #687480;\n    font-size: 12px;\n    line-height: 1.45;\n  }\n\n  .twinter-source {\n    margin-top: 5px;\n    color: #7a8590;\n    font-size: 11px;\n  }\n\n  @media (max-width: 680px) {\n    .twinter-widget {\n      margin: 16px auto;\n      padding: 17px 14px;\n      border-radius: 14px;\n    }\n\n    .twinter-reference {\n      align-items: flex-start;\n      flex-direction: column;\n      gap: 2px;\n    }\n\n    .twinter-selection {\n      min-height: 64px;\n      font-size: 14px;\n    }\n\n    .twinter-stage {\n      min-width: 900px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .twinter-toggle-track,\n    .twinter-toggle-dot,\n    .twinter-tooltip {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-twinter-chart]\");\n    const NORMAL = 5.83;\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.twinterReady === \"true\") return;\n      widget.dataset.twinterReady = \"true\";\n\n      const data = [\n        [1921, 5.20], [1922, 5.57], [1923, 4.10], [1924, 5.70], [1925, 6.53],\n        [1926, 4.53], [1927, 5.70], [1928, 2.17], [1929, 6.10], [1930, 4.70],\n        [1931, 3.53], [1932, 4.70], [1933, 2.77], [1934, 5.87], [1935, 6.23],\n        [1936, 6.63], [1937, 4.70], [1938, 5.27], [1939, 3.10], [1940, 2.80],\n        [1941, 1.53], [1942, 6.13], [1943, 4.13], [1944, 3.87], [1945, 4.97],\n        [1946, 2.37], [1947, 5.63], [1948, 5.40], [1949, 5.57], [1950, 4.47],\n        [1951, 4.17], [1952, 3.13], [1953, 4.53], [1954, 5.90], [1955, 3.00],\n        [1956, 5.90], [1957, 5.37], [1958, 5.33], [1959, 5.70], [1960, 5.70],\n        [1961, 5.33], [1962, 0.73], [1963, 3.53], [1964, 3.70], [1965, 6.50],\n        [1966, 5.70], [1967, 4.43], [1968, 4.40], [1969, 4.30], [1970, 4.03],\n        [1971, 5.50], [1972, 4.40], [1973, 6.07], [1974, 7.17], [1975, 4.73],\n        [1976, 5.70], [1977, 5.23], [1978, 4.60], [1979, 5.83], [1980, 3.87],\n        [1981, 6.03], [1982, 5.23], [1983, 5.00], [1984, 3.47], [1985, 3.97],\n        [1986, 3.57], [1987, 6.60], [1988, 6.07], [1989, 7.53], [1990, 3.87],\n        [1991, 4.43], [1992, 5.70], [1993, 6.63], [1994, 7.23], [1995, 5.30],\n        [1996, 5.33], [1997, 6.60], [1998, 5.73], [1999, 6.13], [2000, 7.17],\n        [2001, 5.93], [2002, 5.40], [2003, 5.90], [2004, 4.63], [2005, 3.87],\n        [2006, 7.30], [2007, 6.60], [2008, 4.27], [2009, 4.23], [2010, 4.97],\n        [2011, 5.33], [2012, 5.10], [2013, 7.27], [2014, 5.60], [2015, 7.97],\n        [2016, 5.60], [2017, 5.93], [2018, 6.77], [2019, 8.20], [2020, 6.67],\n        [2021, 6.67], [2022, 6.63], [2023, 7.87], [2024, 6.53], [2025, 7.60]\n      ];\n\n      const svg = widget.querySelector(\"[data-twinter-svg]\");\n      const tooltip = widget.querySelector(\"[data-twinter-tooltip]\");\n      const selection = widget.querySelector(\"[data-twinter-selection]\");\n      const stage = widget.querySelector(\".twinter-stage\");\n      const toggle = widget.querySelector(\"[data-twinter-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-twinter-toggle-label]\");\n      const content = widget.querySelector(\"[data-twinter-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n      const contentId = `twinter-chart-content-${widgetIndex + 1}`;\n      const gradientId = `twinter-area-gradient-${widgetIndex + 1}`;\n\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1240;\n      const H = 520;\n      const margin = { top: 31, right: 22, bottom: 62, left: 62 };\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = 0;\n      const maxY = 9;\n      const ticks = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n      let activeIndex = data.length - 1;\n      let pinned = false;\n\n      const x = (index) => margin.left + (index \/ (data.length - 1)) * plotW;\n      const y = (value) => margin.top + ((maxY - value) \/ (maxY - minY)) * plotH;\n      const season = (startYear) => `${startYear}\u2013${startYear + 1}`;\n      const valueText = (value) => value.toFixed(1).replace(\".\", \",\").replace(\"-\", \"\u2212\");\n      const gapText = (value) => {\n        const sign = value > 0 ? \"+\" : value < 0 ? \"\u2212\" : \"\";\n        return sign + Math.abs(value).toFixed(1).replace(\".\", \",\");\n      };\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n        Object.entries(attrs).forEach(([name, value]) => element.setAttribute(name, value));\n        return element;\n      };\n\n      const defs = makeSvg(\"defs\");\n      const gradient = makeSvg(\"linearGradient\", {\n        id: gradientId,\n        x1: \"0\",\n        x2: \"0\",\n        y1: \"0\",\n        y2: \"1\"\n      });\n      gradient.appendChild(makeSvg(\"stop\", {\n        offset: \"0%\",\n        \"stop-color\": \"#2f80ed\",\n        \"stop-opacity\": \"0.22\"\n      }));\n      gradient.appendChild(makeSvg(\"stop\", {\n        offset: \"100%\",\n        \"stop-color\": \"#2f80ed\",\n        \"stop-opacity\": \"0.02\"\n      }));\n      defs.appendChild(gradient);\n      svg.appendChild(defs);\n\n      const grid = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      ticks.forEach((tick) => {\n        grid.appendChild(makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0 ? \"twinter-axis-line\" : \"twinter-grid-line\"\n        }));\n        const label = makeSvg(\"text\", {\n          x: margin.left - 11,\n          y: y(tick),\n          class: \"twinter-y-label\"\n        });\n        label.textContent = tick.toString().replace(\".\", \",\");\n        grid.appendChild(label);\n      });\n      const unit = makeSvg(\"text\", { x: 8, y: 19, class: \"twinter-axis-unit\" });\n      unit.textContent = \"Temp\u00e9rature (\u00b0C)\";\n      grid.appendChild(unit);\n      svg.appendChild(grid);\n\n      svg.appendChild(makeSvg(\"line\", {\n        x1: margin.left,\n        x2: W - margin.right,\n        y1: y(NORMAL),\n        y2: y(NORMAL),\n        class: \"twinter-normal-line\",\n        \"aria-hidden\": \"true\"\n      }));\n\n      const linePath = data\n        .map(([, value], index) => `${index === 0 ? \"M\" : \"L\"} ${x(index)} ${y(value)}`)\n        .join(\" \");\n      const areaPath =\n        linePath +\n        ` L ${x(data.length - 1)} ${y(minY)}` +\n        ` L ${x(0)} ${y(minY)} Z`;\n\n      svg.appendChild(makeSvg(\"path\", {\n        d: areaPath,\n        class: \"twinter-area\",\n        fill: `url(#${gradientId})`,\n        \"aria-hidden\": \"true\"\n      }));\n      svg.appendChild(makeSvg(\"path\", {\n        d: linePath,\n        class: \"twinter-curve\",\n        \"aria-hidden\": \"true\"\n      }));\n\n      const labels = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      data.forEach(([startYear], index) => {\n        if (startYear !== 1921 && startYear !== 2025 && startYear % 10 !== 0) return;\n        const label = makeSvg(\"text\", {\n          x: x(index),\n          y: H - 25,\n          class: \"twinter-x-label\"\n        });\n        label.textContent = startYear === 1921 || startYear === 2025\n          ? season(startYear)\n          : `${startYear}`;\n        labels.appendChild(label);\n      });\n      svg.appendChild(labels);\n\n      const markerLine = makeSvg(\"line\", {\n        x1: x(activeIndex),\n        x2: x(activeIndex),\n        y1: margin.top,\n        y2: H - margin.bottom,\n        class: \"twinter-marker-line\",\n        visibility: \"hidden\",\n        \"aria-hidden\": \"true\"\n      });\n      const marker = makeSvg(\"circle\", {\n        cx: x(activeIndex),\n        cy: y(data[activeIndex][1]),\n        r: 4.7,\n        class: \"twinter-marker\",\n        visibility: \"hidden\",\n        \"aria-hidden\": \"true\"\n      });\n      const overlay = makeSvg(\"rect\", {\n        x: margin.left,\n        y: margin.top,\n        width: plotW,\n        height: plotH,\n        class: \"twinter-overlay\",\n        \"aria-hidden\": \"true\"\n      });\n      svg.appendChild(markerLine);\n      svg.appendChild(marker);\n      svg.appendChild(overlay);\n\n      const setSelection = (index) => {\n        const [startYear, value] = data[index];\n        selection.classList.add(\"has-value\");\n        selection.innerHTML =\n          `<strong>Hiver ${season(startYear)}<\/strong> \u2014 temp\u00e9rature moyenne : ` +\n          `<strong>${valueText(value)} \u00b0C<\/strong> \u2022 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${gapText(value - NORMAL)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (index) => {\n        const [startYear, value] = data[index];\n        const svgRect = svg.getBoundingClientRect();\n        const stageRect = stage.getBoundingClientRect();\n        const pointX = svgRect.left + (x(index) \/ W) * svgRect.width;\n        const pointY = svgRect.top + (y(value) \/ H) * svgRect.height;\n        const tooltipX = Math.max(120, Math.min(stageRect.width - 120, pointX - stageRect.left));\n        const tooltipY = Math.max(86, pointY - stageRect.top);\n\n        tooltip.innerHTML =\n          `<strong>Hiver ${season(startYear)}<\/strong>` +\n          `<span>Temp\u00e9rature moyenne : ${valueText(value)} \u00b0C<\/span>` +\n          `<span>\u00c9cart \u00e0 la normale : ${gapText(value - NORMAL)} \u00b0C<\/span>`;\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const showIndex = (index, showTooltip = true) => {\n        activeIndex = Math.max(0, Math.min(data.length - 1, index));\n        const value = data[activeIndex][1];\n        markerLine.setAttribute(\"x1\", x(activeIndex));\n        markerLine.setAttribute(\"x2\", x(activeIndex));\n        markerLine.setAttribute(\"visibility\", \"visible\");\n        marker.setAttribute(\"cx\", x(activeIndex));\n        marker.setAttribute(\"cy\", y(value));\n        marker.setAttribute(\"visibility\", \"visible\");\n        setSelection(activeIndex);\n        if (showTooltip) placeTooltip(activeIndex);\n      };\n\n      const reset = () => {\n        markerLine.setAttribute(\"visibility\", \"hidden\");\n        marker.setAttribute(\"visibility\", \"hidden\");\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n        selection.classList.remove(\"has-value\");\n        selection.textContent =\n          \"Survolez ou touchez la courbe pour afficher la temp\u00e9rature d\u2019un hiver.\";\n      };\n\n      const indexFromPointer = (event) => {\n        const rect = svg.getBoundingClientRect();\n        const svgX = ((event.clientX - rect.left) \/ rect.width) * W;\n        const ratio = (svgX - margin.left) \/ plotW;\n        return Math.round(Math.max(0, Math.min(1, ratio)) * (data.length - 1));\n      };\n\n      overlay.addEventListener(\"pointerenter\", (event) => {\n        if (event.pointerType === \"mouse\" || !pinned) showIndex(indexFromPointer(event));\n      });\n      overlay.addEventListener(\"pointermove\", (event) => {\n        if (event.pointerType === \"mouse\" || !pinned) showIndex(indexFromPointer(event));\n      });\n      overlay.addEventListener(\"pointerleave\", (event) => {\n        if (event.pointerType === \"mouse\" && !pinned) reset();\n      });\n      overlay.addEventListener(\"pointerdown\", (event) => {\n        if (event.pointerType !== \"mouse\") event.preventDefault();\n        pinned = true;\n        showIndex(indexFromPointer(event));\n      });\n      overlay.addEventListener(\"click\", (event) => {\n        pinned = true;\n        showIndex(indexFromPointer(event));\n      });\n\n      svg.addEventListener(\"keydown\", (event) => {\n        if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n        event.preventDefault();\n        pinned = true;\n        showIndex(activeIndex + (event.key === \"ArrowRight\" ? 1 : -1));\n      });\n\n      toggle.addEventListener(\"click\", () => {\n        const isOpen = toggle.getAttribute(\"aria-checked\") === \"true\";\n        toggle.setAttribute(\"aria-checked\", String(!isOpen));\n        toggle.classList.toggle(\"is-active\", !isOpen);\n        toggleLabel.textContent = isOpen ? \"Afficher le diagramme\" : \"Masquer le diagramme\";\n        content.hidden = isOpen;\n        if (isOpen) {\n          pinned = false;\n          reset();\n        }\n      });\n    });\n  })();\n<\/script><script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8902396130105212\"\n     crossorigin=\"anonymous\"><\/script>\n<!-- bas de page -->\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-8902396130105212\"\n     data-ad-slot=\"7724440717\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script><!-- BOUTON SOMMAIRE CLIMATOLOGIE \u2014 WORDPRESS -->\n\n<style>\n  .sommaire-climatologie-wrap {\n    display: flex;\n    justify-content: center;\n    margin: 24px 0;\n  }\n\n  .sommaire-climatologie {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    padding: 15px 32px;\n    color: #ffffff !important;\n    font-family: inherit;\n    font-size: 17px;\n    font-weight: 800;\n    line-height: 1.2;\n    letter-spacing: 0.7px;\n    text-align: center;\n    text-decoration: none !important;\n    text-transform: uppercase;\n    border: 1px solid rgba(255, 255, 255, 0.3);\n    border-radius: 14px;\n    background: linear-gradient(135deg, #064e3b, #059669);\n    box-shadow: 0 8px 20px rgba(5, 150, 105, 0.3);\n    transition: transform 0.25s ease, box-shadow 0.25s ease;\n  }\n\n  .sommaire-climatologie:hover {\n    color: #ffffff !important;\n    transform: translateY(-3px);\n    box-shadow: 0 12px 26px rgba(5, 150, 105, 0.42);\n  }\n\n  .sommaire-climatologie:focus-visible {\n    outline: 3px solid #fbbf24;\n    outline-offset: 4px;\n  }\n\n  @media (max-width: 600px) {\n    .sommaire-climatologie {\n      width: 100%;\n      padding: 15px 20px;\n      font-size: 16px;\n    }\n  }\n<\/style>\n\n<div class=\"sommaire-climatologie-wrap\">\n  <a class=\"sommaire-climatologie\"\n     href=\"https:\/\/alertes-meteo.com\/index.php\/climatologie\/\"\n     aria-label=\"Acc\u00e9der au sommaire Climatologie\">\n    Sommaire Climatologie\n  <\/a>\n<\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":61419,"parent":60843,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_seopress_titles_title":"Temp\u00e9rature Moyenne en Hiver France : \u00c9volution depuis 1921 | Alertes-M\u00e9t\u00e9o","_seopress_titles_desc":"Temp\u00e9rature moyenne en Hiver en France depuis 1921 : \u00e9volution, records et conseils pratiques","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"both","_seopress_redirections_param":"","_seopress_redirections_type":301,"_seopress_analysis_target_kw":"temperature mer","footnotes":""},"class_list":["post-61418","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/pages\/61418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/comments?post=61418"}],"version-history":[{"count":2,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/pages\/61418\/revisions"}],"predecessor-version":[{"id":61423,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/pages\/61418\/revisions\/61423"}],"up":[{"embeddable":true,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/pages\/60843"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/media\/61419"}],"wp:attachment":[{"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/media?parent=61418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}