<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:atom="http://www.w3.org/2005/Atom"  xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title><![CDATA[elDiarioAR.com - Cataluña]]></title>
    <link><![CDATA[https://www.eldiarioar.com/temas/cataluna/]]></link>
    <description><![CDATA[elDiarioAR.com - Cataluña]]></description>
    <language><![CDATA[es]]></language>
    <copyright><![CDATA[Copyright El Diario]]></copyright>
    <ttl>10</ttl>
    <atom:link href="https://www.eldiarioar.com/rss/category/tag/1048542/" rel="self" type="application/rss+xml"/>
    <item>
      <title><![CDATA[Conmoción en España por el regreso y la huida del líder independentista catalán Carles Puigdemont]]></title>
      <link><![CDATA[https://www.eldiarioar.com/mundo/conmocion-espana-regreso-huida-lider-independentista-catalan-carles-puigdemont_1_11579375.html]]></link>
      <description><![CDATA[<p><img src="https://static.eldiario.es/clip/1a844921-c0da-4934-a824-9e1815899705_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675" alt="Conmoción en España por el regreso y la huida del líder independentista catalán Carles Puigdemont"></p><div class="subtitles"><p class="subtitle">La policía catalana lanzó la Operación Jaula para encontrar y detener al líder separatista, quien apareció este jueves en un mitin en el centro de Barcelona, España, pero después volvió a desaparecer.</p></div><p class="article-text">
        La polic&iacute;a catalana lanz&oacute; la&nbsp;Operaci&oacute;n Jaula para encontrar y detener al l&iacute;der separatista&nbsp;<strong>Carles Puigdemont</strong>, quien apareci&oacute; este jueves en un mitin en el centro de Barcelona, Espa&ntilde;a, aunque luego se escurri&oacute;.&nbsp;
    </p><p class="article-text">
        Incluso, un agente fue detenido tras haber sido acusado de&nbsp;ayudar a huir al expresidente catal&aacute;n, ya que era el titular del&nbsp;veh&iacute;culo blanco que los investigadores creen que se us&oacute; para el&nbsp;escape,&nbsp;seg&uacute;n el sitio France 24.
    </p><p class="article-text">
        El dispositivo policial que involucr&oacute; a 300 agentes se cancel&oacute;&nbsp;luego de tres horas.
    </p><p class="article-text">
        La b&uacute;squeda del paradero de&nbsp;Puigdemont&nbsp;gener&oacute; caos en el&nbsp;tr&aacute;nsito por las calles de Barcelona y cerca de la frontera con&nbsp;Francia, debido a los controles de carreteras y registro de los&nbsp;veh&iacute;culos.&nbsp;
    </p><p class="article-text">
        <strong>Puigdemont&nbsp;subi&oacute; a un escenario y ofreci&oacute; un breve discurso</strong> en&nbsp;el que critic&oacute; la represi&oacute;n que a su juicio se desat&oacute; tras el&nbsp;refer&eacute;ndum ilegal celebrado en 2017 y a un pa&iacute;s en el que&nbsp;&ldquo;las&nbsp;leyes de amnist&iacute;a no amnist&iacute;an&rdquo;.&nbsp;<strong>Tras esa intervenci&oacute;n, los diputados de Junts ingresaron en la&nbsp;C&aacute;mara catalana sin la compa&ntilde;&iacute;a de Puigdemont, quien desde&nbsp;entonces se encontraba en paradero desconocido</strong>, seg&uacute;n precis&oacute; el&nbsp;sitio Actualidad RT.
    </p><p class="article-text">
        <strong>El Departamento de Interior del Gobierno catal&aacute;n confirm&oacute; a&nbsp;elDiario.es que se hab&iacute;a pactado con &eacute;l una detenci&oacute;n discreta, es&nbsp;decir, no arrestarlo delante de sus simpatizantes</strong>. 
    </p><p class="article-text">
        Sobre&nbsp;Puigdemont&nbsp;pesa una orden de detenci&oacute;n y captura&nbsp;promulgada por el Tribunal Supremo, que interpret&oacute; que el delito&nbsp;de malversaci&oacute;n, del que se acusa al pol&iacute;tico, no queda cubierta&nbsp;por la ley de amnist&iacute;a aprobada a finales del mes de mayo y que&nbsp;entr&oacute; en vigor dos semanas despu&eacute;s.
    </p><p class="article-text">
        Al grito de &ldquo;Independencia&rdquo; y con banderas catalanas, los seguidores de&nbsp;Puigdemont&nbsp;recibieron al exl&iacute;der&nbsp;separatista, quien lleg&oacute; acompa&ntilde;ado por dirigentes de su partido&nbsp;independentista Junts per-Catalunya, para hablar desde un&nbsp;escenario instalado frente al conocido Arco del Triunfo de&nbsp;Barcelona.
    </p><p class="article-text">
        &ldquo;&iexcl;Vine a recordarles que todav&iacute;a estamos aqu&iacute;! Todav&iacute;a estamos&nbsp;aqu&iacute; porque no tenemos derecho a rendirnos&rdquo;,&nbsp;fue otra de las&nbsp;frases que pronunci&oacute; el independentista catal&aacute;n.
    </p><p class="article-text">
        En el parlamento, mientras tanto,&nbsp;asum&iacute;a el socialista Salvador&nbsp;Illa como nuevo presidente aut&oacute;nomo de Catalu&ntilde;a, tras una d&eacute;cada&nbsp;de gobierno separatista.&nbsp;
    </p><p class="article-text">
        <em>CRM con informaci&oacute;n de la agencia NA</em>
    </p>]]></description>
      <dc:creator><![CDATA[elDiarioAR]]></dc:creator>
      <guid isPermaLink="true"><![CDATA[https://www.eldiarioar.com/mundo/conmocion-espana-regreso-huida-lider-independentista-catalan-carles-puigdemont_1_11579375.html]]></guid>
      <pubDate><![CDATA[Thu, 08 Aug 2024 18:10:14 +0000]]></pubDate>
      <enclosure url="https://static.eldiario.es/clip/1a844921-c0da-4934-a824-9e1815899705_16-9-discover-aspect-ratio_default_0.jpg" length="179371" type="image/jpeg"/>
      <media:content url="https://static.eldiario.es/clip/1a844921-c0da-4934-a824-9e1815899705_16-9-discover-aspect-ratio_default_0.jpg" type="image/jpeg" fileSize="179371" width="1200" height="675"/>
      <media:title><![CDATA[Conmoción en España por el regreso y la huida del líder independentista catalán Carles Puigdemont]]></media:title>
      <media:thumbnail url="https://static.eldiario.es/clip/1a844921-c0da-4934-a824-9e1815899705_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675"/>
      <media:keywords><![CDATA[Carles Puigdemont,España,Cataluña]]></media:keywords>
    </item>
    <item>
      <title><![CDATA[Illa rompe la mayoría independentista pero necesita pactos para gobernar]]></title>
      <link><![CDATA[https://www.eldiarioar.com/mundo/illa-rompe-mayoria-independentista-necesita-pactos-gobernar_1_11361381.html]]></link>
      <description><![CDATA[<p><img src="https://static.eldiario.es/clip/c8dcfec9-5883-4edc-9955-c0f3d663e7f2_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675" alt="Illa rompe la mayoría independentista pero necesita pactos para gobernar"></p><div class="subtitles"><p class="subtitle">El PSC obtiene una contundente victoria que le reafirma como primera fuerza catalana, aunque Illa necesitará forjar alianzas complejas para ser investido, mientras el independentismo sufre su peor debacle desde el inicio del procés.</p><p class="subtitle">Los resultados de las elecciones en Cataluña, municipio a municipio
</p><p class="subtitle">El PSC ganó las elecciones catalanas con 42 escaños y el independentismo perdió la mayoría absoluta
</p></div><p class="article-text">
        <strong>Salvador Illa hizo historia este domingo al ganar las elecciones catalanas en votos y en esca&ntilde;os y con el mejor resultado para el PSC desde 2003. </strong>Las <a href="https://www.eldiario.es/catalunya/resultados-elecciones-catalunya-municipios-2024_1_11350922.html" data-mrf-recirculation="links-noticia" class="link" target="_blank">buenas cifras del candidato socialista</a> rompieron la mayor&iacute;a absoluta independentista despu&eacute;s de m&aacute;s de una d&eacute;cada de gobiernos interrumpidos de Junts y ERC. Pese a esto, Illa necesitar&aacute; una alianza para la investidura que podr&iacute;a no ser sencilla, pues deber&aacute; reunir el apoyo de republicanos y los Comuns para sumar mayor&iacute;a absoluta o, si el partido de Pere Aragon&egrave;s se cierra a esta posibilidad, buscar un pacto transversal a izquierda y derecha para tratar de reunir apoyos en una segunda votaci&oacute;n.
    </p><p class="article-text">
        &ldquo;Los electores catalanes decidieron abrir una nueva etapa&rdquo;, proclam&oacute; Salvador Illa que, tras agradecer el apoyo del presidente del Gobierno, Pedro S&aacute;nchez, anunci&oacute; que se propondr&aacute; para la investidura en cuanto se constituya el Parlament. &ldquo;Catalu&ntilde;a se pone en marcha, con respeto a toto el mundo y con ambici&oacute;n&rdquo;, asegur&oacute; un <a href="https://www.eldiario.es/catalunya/alegria-bailes-san-pancracio-celebracion-psc-catalunya-abierto-nueva-etapa_1_11360903.html" data-mrf-recirculation="links-noticia" class="link" target="_blank">Illa alegre pero no euf&oacute;rico</a>, a diferencia de su equipo m&aacute;s cercano con el que comparecido desde la sede del PSC, donde la alegr&iacute;a era desbordante por un resultado que, se entiende, colocar&aacute; a Illa en la presidencia de la Generalitat.
    </p><p class="article-text">
        Aunque la victoria del PSC es contundente, la gobernabilidad est&aacute; lejos de quedar garantizada, porque necesitan 26 diputados m&aacute;s para llegar a la mayor&iacute;a absoluta o 21 para superar un eventual 'no' del conjunto de los partidos independentistas. Illa podr&iacute;a buscar una alianza de izquierdas, con ERC y los Comuns, o tambi&eacute;n forjar una alianza con Junts, en este caso sin necesitar a ning&uacute;n otro partido.
    </p><figure class="embed-container embed-container--type-embed ">
    
            <div class="arco-catalunya-12m">
  <iframe style="border: 0px;" src="https://elecciones.eldiario.es/widget/autonomicas/arco/catalunya/12-mayo-2024/" width="100%" scrolling="no"></iframe>
 </div>
 
 <style>
  .arco-catalunya-12m iframe { height: 660px;}
  @media only screen and (min-width: 360px){ .arco-catalunya-12m iframe { height: 650px;} }
  @media only screen and (min-width: 400px){ .arco-catalunya-12m iframe { height: 620px;} }
  @media only screen and (min-width: 450px){ .arco-catalunya-12m iframe { height: 620px;} }
  @media only screen and (min-width: 500px){ .arco-catalunya-12m iframe { height: 600px;} }
  @media only screen and (min-width: 600px){ .arco-catalunya-12m iframe { height: 580px;} }
  @media only screen and (min-width: 768px){ .arco-catalunya-12m iframe { height: 560px;} }
 </style>
    </figure><p class="article-text">
        La suma del tripartito de izquierdas, con PSC, ERC y Comuns tendr&iacute;a mayor&iacute;a absoluta. Sin embargo, el problema para esta f&oacute;rmula podr&iacute;a ser ERC. Los republicanos sostuvieron durante toda la campa&ntilde;a que Illa tiene una propuesta que est&aacute; &ldquo;en las ant&iacute;podas&rdquo; de lo que defiende la candidatura de Aragon&egrave;s, que esta noche perdi&oacute; cualquier esperanza de mantener la presidencia de la Generalitat. Los republicanos en cambio podr&iacute;an hacer valer la llave para decidir si hacen posible esa mayor&iacute;a de izquierdas, para lo que deber&iacute;an decidir si le otorgan la presidencia a Illa o la bloquean, con el riesgo de que eso suponga una repetici&oacute;n electoral.
    </p><p class="article-text">
        &ldquo;La oposici&oacute;n al Govern republicano, PSC y Junts, gan&oacute;. Aceptaremos el resultado y ERC pasar&aacute; a la oposici&oacute;n&rdquo;, asegur&oacute; Pere Aragon&egrave;s en su comparecencia, tras reconocer una severa derrota. El l&iacute;der republicano esquiv&oacute; as&iacute; cualquier responsabilidad sobre la gobernabilidad de la Generalitat, que el ya president saliente dej&oacute; en manos de PSC y Junts, dos formaciones que tambi&eacute;n pueden sumar aunque en varias ocasiones durante la campa&ntilde;a se excluyeron mutuamente.
    </p><p class="article-text">
        El independentismo sufri&oacute; este 12 de mayo una contundente derrota, sobre todo por el descalabro de ERC y la CUP, que pierden 13 y 5 diputados respectivamente. La bajada de los partidos de la izquierda independentista no se compensa por la menor crecida de Junts, que consigui&oacute; tres esca&ntilde;os m&aacute;s que en 2021 gracias al revulsivo que supuso que Carles Puigdemont lidere la candidatura. Adem&aacute;s, la extrema derecha independentista de Alian&ccedil;a Catalana entra en el Parlament con 2 esca&ntilde;os, por las provincias de Girona y Lleida.
    </p><p class="article-text">
        El bloque de los partidos partidarios de la ruptura con Espa&ntilde;a siempre hab&iacute;a estado al menos desde 2012 por encima de los 68 esca&ntilde;os y del 47% de voto, unas cifras que parecen lejanas ahora, donde la suma de Junts, ERC, CUP y Alian&ccedil;a qued&oacute; en 61 esca&ntilde;os y poco m&aacute;s del 43% de los sufragios. Desde el a&ntilde;o 2017, el independentismo perdi&oacute; cerca de un mill&oacute;n de votos.
    </p><p class="article-text">
        Pese a la debacle independentista y que Carles Puigdemont felicit&oacute; a Illa por su victoria, el l&iacute;der de Junts mostr&oacute; en su primera comparecencia ante los medios que no tira la toalla y que seguir&aacute;n intentando conseguir la presidencia de la Generalitat con una carambola. &ldquo;Estamos en condiciones de construir un Govern s&oacute;lido y de obediencia catalana&rdquo;, dijo Puigdemont, que lanz&oacute; a la vez una cr&iacute;ptica advertencia hacia el PSOE. &ldquo;La distancia entre el primer y el segon en el Parlament no es diferente a la del PP y el PSOE en el Congreso&rdquo;, asegur&oacute; el a&uacute;n eurodiputado, recordando as&iacute; a S&aacute;nchez que su partido es clave para la mayor&iacute;a del Gobierno. 
    </p><p class="article-text">
        Uno de los partidos m&aacute;s beneficiados de esta jornada electoral es el PP, que aprovech&oacute; como ning&uacute;n otro la desaparici&oacute;n de Ciudadanos. La formaci&oacute;n consigue situarse como cuarto partido del Parlament, con 15 esca&ntilde;os (desde los 3 que ha tenido en la &uacute;ltima legislatura), supera a Vox, que se queda en los 11 asientos que ya ten&iacute;a, y entra por zonas complicadas para el partido, como Lleida y Girona. El l&iacute;der Alejandro Fern&aacute;ndez se consolid&oacute; con su buen resultado delante de un PP nacional con el que hab&iacute;a tenido enfrentamientos y que hab&iacute;a provocado que Alberto N&uacute;&ntilde;ez Feij&oacute;o llegara a plantear su sustituci&oacute;n.
    </p><p class="article-text">
        &ldquo;La utilidad con la que asuman estos resultados ser&aacute; la piedra sobre la que construiremos el futuro del partido&rdquo;; advirti&oacute; Fern&aacute;ndez, que asegur&oacute; que el PP &ldquo;consigui&oacute; todos sus objetivos&rdquo;.
    </p><p class="article-text">
        Comuns y CUP, dos formaciones de izquierdas que tambi&eacute;n resultaron perjudicadas en estas elecciones, intercambiaron su posici&oacute;n en el Parlament, donde ahora la formaci&oacute;n de J&eacute;ssica Albiach tiene dos diputados m&aacute;s que los independentistas. La l&iacute;der de la CUP, Laia Estrada, hizo una valoraci&oacute;n muy negativa de los resultados, que asegur&oacute; que son &ldquo;malos para el pa&iacute;s&rdquo; y sobre los que destac&oacute; el crecimiento de las fuerzas de derechas. Por su parte, los Comuns se vieron disminuidos sobre todo por el crecimiento del PSC, perdieron el diputado que ten&iacute;an en Tarragona y otro en Barcelona y no fueron capaces de obtener el cargo por Girona al que aspiraban.
    </p><figure class="embed-container embed-container--type-embed ">
    
            <div class="mapa-catalunya-12m">
  <iframe style="border: 0px;" src="https://elecciones.eldiario.es/mapas12m" width="100%" scrolling="no"></iframe>
 </div>
 
 <style>
  .mapa-catalunya-12m iframe { height: 680px;}
  @media only screen and (min-width: 360px){ .mapa-catalunya-12m iframe { height: 680px;} }
  @media only screen and (min-width: 400px){ .mapa-catalunya-12m iframe { height: 680px;} }
  @media only screen and (min-width: 450px){ .mapa-catalunya-12m iframe { height: 680px;} }
  @media only screen and (min-width: 500px){ .mapa-catalunya-12m iframe { height: 680px;} }
  @media only screen and (min-width: 600px){ .mapa-catalunya-12m iframe { height: 720px;} }
  @media only screen and (min-width: 768px){ .mapa-catalunya-12m iframe { height: 720px;} }
 </style>
    </figure><p class="article-text">
        Illa consigui&oacute; un resultado que sigue la estela de su victoria en votos de 2021, que ya supuso resultados contundentes en la mayor&iacute;a de de los municipios de las &aacute;reas metropolitanas de Barcelona y Tarragona, pero que ahora se dispar&oacute; con porcentajes tambi&eacute;n altos en zonas del interior de la provincias de Girona, Lleida y el interior de la provincia de Barcelona.
    </p><p class="article-text">
        Los socialistas conseguieron porcentajes de m&aacute;s del 30% de apoyos en seis comarcas y pudo imponerse en 12. En el Baix Llobregat y la Vall d'Aran, el PSC supera el 36% del voto. Por provincias, el PSC crece en todas las provincias, especialmente en Tarragona (+5,39 puntos) y en Barcelona (+4,85).
    </p><p class="article-text">
        <strong>Carles Puigdemont hizo una campa&ntilde;a muy inusual.</strong> Situado en la zona del sur de Francia colindante con la frontera catalana, el candidato de Junts celebr&oacute; m&iacute;tines diarios en un pabell&oacute;n de la ciudad de Elna, adonde se desplaz&oacute; cada d&iacute;a a centenares de sus partidarios en autob&uacute;s desde diferentes zonas de Catalu&ntilde;a. Pero, m&aacute;s all&aacute; de la cuesti&oacute;n log&iacute;stica, la formaci&oacute;n toc&oacute; la tecla sentimental de su electorado sosteniendo el relato del regreso de Puigdemont tras siete a&ntilde;os, cuando sea beneficiado por la amnist&iacute;a, y convirtiendo este hecho en un activo electoral.
    </p>]]></description>
      <dc:creator><![CDATA[Arturo Puente]]></dc:creator>
      <guid isPermaLink="true"><![CDATA[https://www.eldiarioar.com/mundo/illa-rompe-mayoria-independentista-necesita-pactos-gobernar_1_11361381.html]]></guid>
      <pubDate><![CDATA[Sun, 12 May 2024 23:11:27 +0000]]></pubDate>
      <enclosure url="https://static.eldiario.es/clip/c8dcfec9-5883-4edc-9955-c0f3d663e7f2_16-9-discover-aspect-ratio_default_0.jpg" length="17069991" type="image/jpeg"/>
      <media:content url="https://static.eldiario.es/clip/c8dcfec9-5883-4edc-9955-c0f3d663e7f2_16-9-discover-aspect-ratio_default_0.jpg" type="image/jpeg" fileSize="17069991" width="1200" height="675"/>
      <media:title><![CDATA[Illa rompe la mayoría independentista pero necesita pactos para gobernar]]></media:title>
      <media:thumbnail url="https://static.eldiario.es/clip/c8dcfec9-5883-4edc-9955-c0f3d663e7f2_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675"/>
      <media:keywords><![CDATA[Elecciones en España,Cataluña]]></media:keywords>
    </item>
    <item>
      <title><![CDATA[Los resultados de las elecciones en Cataluña, municipio a municipio]]></title>
      <link><![CDATA[https://www.eldiarioar.com/mundo/resultados-elecciones-catalunya-municipios-2024_1_11361207.html]]></link>
      <description><![CDATA[<p><img src="https://static.eldiario.es/clip/3d02d8ba-a136-41c1-b664-6e6c69eb534c_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675" alt="Los resultados de las elecciones del 12M en Catalunya, municipio a municipio"></p><div class="subtitles"><p class="subtitle">Consultá en mapas y gráficos el detalle de los resultados de las elecciones autonómicas de Cataluña el 12 de mayo: voto a cada partido y la comparación con los resultados de las elecciones de 2021.</p><p class="subtitle">El PSC ganó las elecciones catalanas con 42 escaños y el independentismo pierde la mayoría absoluta
</p></div><figure class="embed-container embed-container--type-embed ">
    
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<div id="container-mapa-resultados-municipios-catalunya-12m">
    <button class="button-close-fullscreen-map"></button>
    <iframe id="mapa-resultados-municipios-catalunya-12m-iframe" class="mapa-resultados-municipios-catalunya-12m"
        style="border: 0px;"
        src="https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/mapas/mapbox-municipios-resultados-12m-catalunya.html"
        height="700" width="100%" class="tableau-responsive" scrolling="no" allowfullscreen="true"></iframe>
    <div id="overlay-mapa-resultados-municipios-catalunya-12m"></div>
</div>
<style>
    @media only screen and (max-width: 900px) {
        .mapa-resultados-municipios-catalunya-12m {
            height: 80vh;
            min-height: 600px
        }

        .i-amphtml-layout-size-defined {
            height: 700px
        }

        .fullscreenmap {
            position: fixed;
            top: 0px;
            left: 0px;
            bottom: 0px;
            right: 0px;
            width: 100%;
            height: 100%;
            border: none;
            margin: 0;
            padding: 0;
            overflow: hidden;
            z-index: 9999
        }

        #container-mapa-resultados-municipios-catalunya-12m {
            position: relative
        }

        #overlay-mapa-resultados-municipios-catalunya-12m {
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            position: absolute;
            display: block;
        }

        .button-close-fullscreen-map {
            position: absolute;
            right: 8px;
            top: 210px;
            width: 30px;
            height: 30px;
            opacity: 1;
            background-color: white;
            border: 0;
            border-radius: 2px;
            display: none;
            box-shadow: 0 0 0 2px rgb(0 0 0 / 10%);
        }

        .button-close-fullscreen-map:before,
        .button-close-fullscreen-map:after {
            position: absolute;
            left: 14px;
            top: 3px;
            content: ' ';
            height: 25px;
            width: 2px;
            background-color: #333;
        }

        .button-close-fullscreen-map:before {
            transform: rotate(45deg);
        }

        .button-close-fullscreen-map:after {
            transform: rotate(-45deg);
        }

        body.lock-scroll {
            overflow: hidden;
        }
    }

    @media only screen and (min-width: 900px) {
        .mapa-resultados-municipios-catalunya-12m {
            height: 720px
        }

        #container-mapa-resultados-municipios-catalunya-12m {
            position: relative
        }

        #overlay-mapa-resultados-municipios-catalunya-12m {
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            position: absolute;
            display: none
        }

        .button-close-fullscreen-map {
            display: none;
        }
    }
</style>
<p style="text-align:left;color:black;font-size:12px;margin-left:5px;font-family:'Encode Sans',sans-serif">Fuente:
    Generalitat de Catalunya</p>
<br>

<script>
    var totalWidthIframe = window.innerWidth;


    if (totalWidthIframe < 900) {
        $("#overlay-mapa-resultados-municipios-catalunya-12m").click(function () {


            $('body').addClass('lock-scroll');

            document.getElementById('container-mapa-resultados-municipios-catalunya-12m').classList.add(
                'fullscreenmap');
            document.getElementById('mapa-resultados-municipios-catalunya-12m-iframe').classList.add(
                'fullscreenmap');
            $('#overlay-mapa-resultados-municipios-catalunya-12m').hide();
            $('.button-close-fullscreen-map').css({
                "z-index": "99999",
                "display": "block",
                "position": "fixed"
            });
        });


        $(".button-close-fullscreen-map").click(function () {

            $('body').removeClass('lock-scroll');

            document.getElementById('container-mapa-resultados-municipios-catalunya-12m').classList.remove(
                'fullscreenmap');
            document.getElementById('mapa-resultados-municipios-catalunya-12m-iframe').classList.remove(
                'fullscreenmap');

            $('#overlay-mapa-resultados-municipios-catalunya-12m').show();
            $('.button-close-fullscreen-map').css({
                "z-index": "0",
                "display": "none",
                "position": "absolute"
            });
        });

    }
</script>
    </figure><p class="article-text">
        Consulta en directo los mapas y gr&aacute;ficos de <strong>elDiario.es</strong> para conocer los resultados de las elecciones de Catalu&ntilde;a este 12 de mayo. Descubre cu&aacute;l es el partido m&aacute;s votado en estos comicios entre <span style="background-color:#E02020;color:white;padding:0px 2px;">PSC</span>, <span style="background-color:#FFB232;color:white;padding:0px 2px;">ERC</span>, <span style="background-color:#40B6A4;color:white;padding:0px 2px;">Junts</span>, <span style="background-color:#AAD656;color:white;padding:0px 2px;">Vox</span>, <span style="background-color:#FFED00;color:black;padding:0px 2px;">CUP</span>, <span style="background-color:#A54290;color:white;padding:0px 2px;">Comuns</span>, <span style="background-color:#EA8046;color:white;padding:0px 2px;">Cs</span>, <span style="background-color:#02A2DD;color:white;padding:0px 2px;">PP</span> y <span style="background-color:#10245b;color:white;padding:0px 2px;">Alian&ccedil;a C.</span>. 
    </p><p class="article-text">
        Tambi&eacute;n puede verse el ganador seg&uacute;n el tama&ntilde;o de la poblaci&oacute;n, el segundo partido m&aacute;s votado y los resultados para los que cambiaron de ganador respecto a las anteriores elecciones de 2021. El bot&oacute;n superior permite consultar estos resultados por provincias y por municipios. Adem&aacute;s, puedes consultar los datos por distritos de Barcelona haciendo zoom en la ciudad.
    </p><p class="article-text">
        La siguiente tabla muestra <strong>el reparto de los 135 esca&ntilde;os que conforman en la actualidad el Parlament y el detalle de los resultados obtenidos por las principales formaciones pol&iacute;ticas este 12M.</strong> &nbsp;Aqu&iacute; figuran, para cada partido, el n&uacute;mero de votos, el porcentaje que representan sobre el total de los votos a candidaturas, los esca&ntilde;os y, adem&aacute;s, si suben o bajan respecto a los anteriores comicios de 2021.
    </p><figure class="embed-container embed-container--type-embed ">
    
            <link href="https://fonts.googleapis.com/css?family=Encode+Sans:400,600,700|Roboto:400,500,700&display=swap"
    rel="stylesheet">
<link rel="stylesheet" href="https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/charts_12m.css">
<script src="https://d3js.org/d3.v4.js"></script>
<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>


<div class="div_table_blocks_flex">

    <div id="table_results" class="table_block_results">
        <h4 class="nombre_circunscripcion">Resultados 12M - Catalunya</h4>

        <div class="escrutado-porcentaje-tabla-global" id="escrutado-porcentaje-tabla">-% escr.</div>

        <!-- Barras -->
        <div id="barras-texto-superior-global">

            <div id="barras-arriba-tabla" class="barras-arriba-tabla">
                <div class="text-elecc-actuales">2024</div>
                <div class="vertical-linea-medio"></div>
            </div>
            <div id="barras-arriba-tabla_prev" class="barras-arriba-tabla_prev">
                <div class="text-elecc-anteriores">2021</div>
                <div class="vertical-linea-medio"></div>
            </div>

        </div>
        <!-- Barras -->
        <div id="tabla_results"></div>

    </div>



</div>



<script>
    (function () {
        var eslocale = d3.timeFormatLocale({
            "dateTime": "%A, %e de %B de %Y, %X",
            "date": "%d/%m/%Y",
            "time": "%H:%M:%S",
            "periods": ["AM", "PM"],
            "days": ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"],
            "shortDays": ["dom", "lun", "mar", "mié", "jue", "vie", "sáb"],
            "months": ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto",
                "septiembre",
                "octubre",
                "noviembre", "diciembre"
            ],
            "shortMonths": ["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov",
                "dic"
            ]
        })
        var parseTime = d3.timeParse("%d/%m/%Y");


        var locale = d3.formatLocale({
            decimal: ",",
            thousands: ".",
            grouping: [3]
        });

        d3.queue()
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2405/autonomicasC09.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2405/autonomicasC09_partidos.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2102/autonomicasC09.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2102/autonomicasC09_partidos.json")
            .await(function (err, resultselectiontable, partieslisttable, resultselectiontable_prev,
                partieslisttable_prev) {


                createTableResults(resultselectiontable, partieslisttable, resultselectiontable_prev,
                    partieslisttable_prev, "9999", "table_results", 15)

            })

    })();
</script>
<script src='https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/charts_12m_min.js'></script>
    </figure><p class="article-text">
        <strong>&iquest;Y c&oacute;mo se reparten los esca&ntilde;os en las provincias? </strong>El siguiente gr&aacute;fico muestra c&oacute;mo se produce la distribuci&oacute;n de los esca&ntilde;os por cada provincia, donde Barcelona reparte 85, Tarragona, 18, Girona, 17 y Lleida 15. Para las cuatro figuran el n&uacute;mero de votos, el porcentaje sobre el voto v&aacute;lido y los esca&ntilde;os. 
    </p><figure class="embed-container embed-container--type-embed ">
    
            <link href="https://fonts.googleapis.com/css?family=Encode+Sans:400,600,700|Roboto:400,500,700&display=swap"
    rel="stylesheet">
<link rel="stylesheet" href="https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/charts_12m.css">

<script src="https://d3js.org/d3.v4.js"></script>
<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>


<div class="div_provincia_blocks_flex">

    <div id="provincia_08" class="provincia_block_results">
        <h4 class="nombre_provincia">Barcelona</h4>

        <div class="escrutado-porcentaje-global" id="escrutado-porcentaje">-% escr.</div>

        <!-- Barras -->
        <div id="barras-texto-superior-global-provincia">

            <div id="barras-arriba-provincia" class="barras-arriba-provincia">
                <div class="text-elecc-actuales">2024</div>
                <div class="vertical-linea-medio"></div>
            </div>
            <div id="barras-arriba-provincia_prev" class="barras-arriba-provincia_prev">
                <div class="text-elecc-anteriores">2021</div>
                <div class="vertical-linea-medio"></div>
            </div>

        </div>
        <!-- Barras -->
        <div id="tabla_results"></div>

        <div class="link_full_results"><a
                href="https://elecciones.eldiario.es/autonomicas/catalunya/12-mayo-2024/barcelona">Resultados
                completos</a></div>

    </div>


    <div id="provincia_43" class="provincia_block_results">
        <h4 class="nombre_provincia">Tarragona</h4>

        <div class="escrutado-porcentaje-global" id="escrutado-porcentaje">-% escr.</div>

        <!-- Barras -->
        <div id="barras-texto-superior-global-provincia">

            <div id="barras-arriba-provincia" class="barras-arriba-provincia">
                <div class="text-elecc-actuales">2024</div>

                <div class="vertical-linea-medio"></div>
            </div>
            <div id="barras-arriba-provincia_prev" class="barras-arriba-provincia_prev">
                <div class="text-elecc-anteriores">2021</div>
                <div class="vertical-linea-medio"></div>
            </div>

        </div>
        <!-- Barras -->
        <div id="tabla_results"></div>

        <div class="link_full_results"><a
                href="https://elecciones.eldiario.es/autonomicas/catalunya/12-mayo-2024/tarragona">Resultados
                completos</a></div>

    </div>

    <div id="provincia_17" class="provincia_block_results">
        <h4 class="nombre_provincia">Girona</h4>

        <div class="escrutado-porcentaje-global" id="escrutado-porcentaje">-% escr.</div>

        <!-- Barras -->
        <div id="barras-texto-superior-global-provincia">

            <div id="barras-arriba-provincia" class="barras-arriba-provincia">
                <div class="text-elecc-actuales">2024</div>

                <div class="vertical-linea-medio"></div>
            </div>
            <div id="barras-arriba-provincia_prev" class="barras-arriba-provincia_prev">
                <div class="text-elecc-anteriores">2021</div>
                <div class="vertical-linea-medio"></div>
            </div>

        </div>
        <!-- Barras -->
        <div id="tabla_results"></div>

        <div class="link_full_results"><a
                href="https://elecciones.eldiario.es/autonomicas/catalunya/12-mayo-2024/girona">Resultados
                completos</a></div>

    </div>


    <div id="provincia_25" class="provincia_block_results">
        <h4 class="nombre_provincia">Lleida</h4>

        <div class="escrutado-porcentaje-global" id="escrutado-porcentaje">-% escr.</div>

        <!-- Barras -->
        <div id="barras-texto-superior-global-provincia">

            <div id="barras-arriba-provincia" class="barras-arriba-provincia">
                <div class="text-elecc-actuales">2024</div>

                <div class="vertical-linea-medio"></div>
            </div>
            <div id="barras-arriba-provincia_prev" class="barras-arriba-provincia_prev">
                <div class="text-elecc-anteriores">2021</div>
                <div class="vertical-linea-medio"></div>
            </div>

        </div>
        <!-- Barras -->
        <div id="tabla_results"></div>

        <div class="link_full_results"><a
                href="https://elecciones.eldiario.es/autonomicas/catalunya/12-mayo-2024/lleida">Resultados
                completos</a></div>

    </div>




</div>




<style>
    .div_provincia_blocks_flex {
        display: flex;
        flex-direction: row;
        gap: 0px 30px;
        flex-wrap: wrap;
        margin-top: 50px;
    }

    .barras-arriba-provincia {
        display: flex;
        flex-wrap: wrap;
        flex-direction: column;
        align-items: center;
        align-content: center;
        gap: 1px;
        position: relative;
    }

    .barras-arriba-provincia_prev {
        display: flex;
        flex-wrap: wrap;
        flex-direction: column;
        align-items: center;
        align-content: center;
        gap: 1px;
        margin-bottom: 30px;
        position: relative
    }

    /* BARRAS ARRIBA */
    #barras-texto-superior-global-provincia {
        font-family: 'Encode Sans', sans-serif;
        height: 85px;
        display: flex;
        flex-direction: column;
        gap: 10px;
        justify-content: end;
    }


    .provincia_block_results {
        border-top: 1px solid #4A4A4A;
        font-family: 'Encode Sans', sans-serif;
        position: relative;
        flex-basis: 100%;
        text-align: left;
    }

    .provincia_block_results:before {
        content: "";
        content: "";
        position: absolute;
        right: -14px;
        border: 1px solid #E9E9E9;
        height: 360px
    }



    .provincia_block_results .link_full_results {
        font-family: 'Encode Sans';
        font-style: normal;
        font-weight: 400;
        font-size: 11px;
        line-height: 20px;
        /* identical to box height, or 182% */

        text-align: right;
        text-transform: uppercase;
        text-align: center;
        margin: 20px 0px 30px 0px;
        color: #004A7F;
    }

    .provincia_block_results .escrutado-porcentaje-global {
        font-size: 11px;
        font-weight: 400;
        margin-right: 5px;
        position: absolute;
        top: 10px;
        right: 0px;
        color: #979797
    }


    .provincia_block_results .vertical-linea-medio {
        height: calc(102% + 5px);
        position: absolute;
        left: calc(50% - 1px);
        margin-top: -2px;
        /* opacity: 0.57; */
        border: 1px solid #000000;
    }


    .provincia_block_results .text-elecc-anteriores {
        bottom: -13px;
        left: calc(50% - 25px);
        position: absolute;

    }

    .provincia_block_results .text-elecc-actuales {
        top: -15px;
        left: calc(50% - 25px);
        position: absolute;

    }





    .provincia_block_results .nombre_provincia {
        font-family: 'Encode Sans', sans-serif;
        font-size: 16px;
        font-weight: 700;
        margin: 5px 0px 30px 0px
    }

    .provincia_block_results .text-elecc-anteriores {
        font-size: 11px;
        font-weight: 400;
        color: #4A4A4A;
        margin-top: 2px;
    }

    .provincia_block_results .text-elecc-actuales {
        font-size: 11px;
        font-weight: 400;
        color: #4A4A4A;
        margin-top: 2px;
    }

    .provincia_block_results #tabla_results table {
        font-family: 'Encode Sans', sans-serif;
        font-size: 14px;
        border-collapse: collapse;
        height: 100px;
        width: 100%;
        border-spacing: 2px;
    }

    .provincia_block_results #tabla_results th {
        font-family: 'Encode Sans', sans-serif;
        font-weight: 400;
        font-size: 10px;
        text-transform: uppercase;
        cursor: s-resize;
        background-repeat: no-repeat;
        background-position: 3% center;
        text-align: left
    }


    .provincia_block_results #tabla_results tr {
        text-align: right;
        padding-bottom: 0px;
        padding-top: 0px;
        border-bottom: 1px solid #ddd;
    }

    .provincia_block_results #tabla_results td {
        text-align: right;
        padding-bottom: 5px;
        padding-top: 5px;
        border-bottom: 1px solid #ddd;
    }

    @media (min-width: 600px) {

        .provincia_block_results {
            flex-basis: 100%;
        }

    }

    @media (min-width: 900px) {

        .provincia_block_results {
            flex-basis: 47%;
        }

    }
</style>


<script>
    (function () {
        var eslocale = d3.timeFormatLocale({
            "dateTime": "%A, %e de %B de %Y, %X",
            "date": "%d/%m/%Y",
            "time": "%H:%M:%S",
            "periods": ["AM", "PM"],
            "days": ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"],
            "shortDays": ["dom", "lun", "mar", "mié", "jue", "vie", "sáb"],
            "months": ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto",
                "septiembre",
                "octubre",
                "noviembre", "diciembre"
            ],
            "shortMonths": ["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov",
                "dic"
            ]
        })
        var parseTime = d3.timeParse("%d/%m/%Y");


        var locale = d3.formatLocale({
            decimal: ",",
            thousands: ".",
            grouping: [3]
        });


        var headerstablaresults = d3.scaleOrdinal() // D3 Version 4
            .domain(["votes", "percentage", "seats"])
            .range(["Votos", "%", "Escaños"])
            .unknown("");


        function createProvinciaTableResults(resultselection, partieslist, resultselection_prev, partieslist_prev,
            provinciacode,
            provinciaid) {


            var seatselection = [];
            var seatselection_prev = [];
            var tabledata = [];

            Object.keys(resultselection[provinciacode].v).forEach((b) => {
                var resultData = {};
                resultData['party'] = partieslist[b].sigla;
                resultData['colorparty'] = partieslist[b].color;
                resultData['votes'] = resultselection[provinciacode]["v"][b].v
                resultData['percentage'] = resultselection[provinciacode]["v"][b].p
                resultData['seats'] = resultselection[provinciacode]["v"][b].s
                tabledata.push(resultData);
            });


            Object.keys(resultselection[provinciacode].v).forEach((b) => {
                var resultData = {};
                resultData['party'] = partieslist[b].sigla;
                resultData['colorparty'] = partieslist[b].color;
                resultData['blockparty'] = partieslist[b].block;
                resultData['votes'] = resultselection[provinciacode]["v"][b].v
                resultData['percentage'] = resultselection[provinciacode]["v"][b].p
                resultData['seats'] = resultselection[provinciacode]["v"][b].s
                resultData['seatsorder'] = partieslist[b].i == "i" ? -resultselection[provinciacode][
                        "v"
                    ][b]
                    .s :
                    resultselection[provinciacode]["v"][b].s

                seatselection.push(resultData);
            });


            Object.keys(resultselection_prev[provinciacode].v).forEach((b) => {
                var resultData = {};
                resultData['party'] = partieslist_prev[b].sigla;
                resultData['colorparty'] = partieslist_prev[b].color;
                resultData['blockparty'] = partieslist_prev[b].block;
                resultData['votes'] = resultselection_prev[provinciacode]["v"][b].v
                resultData['percentage'] = resultselection_prev[provinciacode]["v"][b].p
                resultData['seats'] = resultselection_prev[provinciacode]["v"][b].s
                resultData['seatsorder'] = partieslist_prev[b].i == "i" ? -resultselection_prev[
                    provinciacode][
                    "v"
                ][b].s : resultselection_prev[provinciacode]["v"][b].s

                seatselection_prev.push(resultData);
            });


            var totalseats = d3.sum(seatselection, function (d) {
                return d.seats
            });
            var totalseats_prev = d3.sum(seatselection_prev, function (d) {
                return d.seats
            });


            seatselection = seatselection.flatMap(d => Array(d.seats).fill(d))
            seatselection_prev = seatselection_prev.flatMap(d => Array(d.seats).fill(d))

            seatselection.sort(function (a, b) {
                return d3.descending(a.seatsorder, b
                    .seatsorder);
            })


            seatselection_prev.sort(function (a, b) {
                return d3.descending(a.seatsorder, b
                    .seatsorder);
            });

            tabledata.sort(function (a, b) {
                return d3.descending((a.votes), (b.votes));
            });



            var provinciaresultsdiv = d3.select("#" + provinciaid);


            var barrasdiputadostotales = provinciaresultsdiv.select('.barras-arriba-provincia');
            var barrasdiputadostotales_prev = provinciaresultsdiv.select('.barras-arriba-provincia_prev');

            barrasdiputadostotales
                .style("height", totalseats > 50 ? "33px" : totalseats > 25 ? "22px" : "11px")
                .selectAll('.diputadosbars')

                .data(seatselection.filter(function (d) {
                    return d.seats > 0
                }))
                .enter()
                .append('div')
                .attr("class", "diputadosbars")
                .style("background-color", function (d) {
                    return d.colorparty
                })
                .style("height", "20px")
                .style("font-size", "16px")
                .style("color", "white")
                .style("padding", "0px")
                .style("text-align", "center")
                .style("width", "10px")
                .style("height", "10px")




            barrasdiputadostotales_prev
                .style("height", totalseats_prev > 50 ? "33px" : totalseats_prev > 25 ? "22px" : "11px")
                .selectAll('.diputadosbars')
                .data(seatselection_prev.filter(function (d) {
                    return d.seats > 0
                }))
                .enter()
                .append('div')
                .attr("class", "diputadosbars")
                .style("background-color", function (d) {
                    return d.colorparty
                })
                .style("height", "5px")
                .style("font-size", "16px")
                .style("color", "white")
                .style("text-align", "center")
                .style("width", "10px")
                .style("height", "10px")




            var tablaresults = provinciaresultsdiv.select('#tabla_results').append('table');
            var encabezadostabla = d3.keys(tabledata[0]);
            var headersresults = tablaresults.append('thead').append('tr')
                .selectAll('th')
                .data(encabezadostabla).enter()
                .append('th')
                .attr('id', function (d) {
                    return d + "header";
                })
                .text(function (d) {
                    return headerstablaresults(d);
                })


            var rowsresults = tablaresults.append('tbody').selectAll('tr')
                .data(tabledata.slice(0, 7))
                .enter()
                .append('tr');
            rowsresults.selectAll('td')
                .data(function (d) {
                    return encabezadostabla.map(function (k) {
                        return {
                            'value': d[k],
                            'name': k
                        };
                    });
                }).enter()
                .append('td')
                .attr('id', function (d) {
                    return d.name;
                })
                .text(function (d) {
                    return d.value;
                });


            provinciaresultsdiv.selectAll("#colorparty")
                .style("display", "none");

            provinciaresultsdiv.selectAll("#colorpartyheader")
                .style("display", "none");


            provinciaresultsdiv.selectAll("#party")
                .style("color", function (d) {
                    return (this.parentNode.__data__.colorparty);
                })
                .style("text-align", "left")
                .style("font-weight", 600);

            provinciaresultsdiv.selectAll("#votes")
                .text(function (d) {
                    return locale.format(",d")(d.value);
                })
                .style("text-align", "left");


            provinciaresultsdiv.selectAll("#percentage")
                .text(function (d) {
                    return locale.format(".1f")(d.value / 100) + "%";
                })
                .style("text-align", "left");

            provinciaresultsdiv.selectAll("#seats")
                .text(function (d) {
                    return (d.value);
                })
                .style("text-align", "left");

            provinciaresultsdiv.select("#escrutado-porcentaje")
                .html("Escr. <span style='font-weight:600'>" +
                    locale
                    .format(".1f")(resultselection[provinciacode].i[
                        "escrutado"] / 100) + "%</span>");
        }



        d3.queue()
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2405/autonomicasC09.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2405/autonomicasC09_partidos.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2102/autonomicasC09.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2102/autonomicasC09_partidos.json")
            .await(function (err, resultselectionprovincia, partieslistprovincia, resultselectionprovincia_prev,
                partieslistprovincia_prev) {

                createProvinciaTableResults(resultselectionprovincia, partieslistprovincia,
                    resultselectionprovincia_prev,
                    partieslistprovincia_prev, "9908", "provincia_08")
                createProvinciaTableResults(resultselectionprovincia, partieslistprovincia,
                    resultselectionprovincia_prev,
                    partieslistprovincia_prev, "9917", "provincia_17")
                createProvinciaTableResults(resultselectionprovincia, partieslistprovincia,
                    resultselectionprovincia_prev,
                    partieslistprovincia_prev, "9925", "provincia_25")
                createProvinciaTableResults(resultselectionprovincia, partieslistprovincia,
                    resultselectionprovincia_prev,
                    partieslistprovincia_prev, "9943", "provincia_43")

            })



    })();
</script>
    </figure><p class="article-text">
        <strong>&iquest;Y qu&eacute; partido sube o baja en los grandes municipios de Catalunya respecto a las elecciones de 2021? </strong>El siguiente gr&aacute;fico permite comparar el voto a cada partido entre los anteriores comicios y los actuales en los 50 municipios m&aacute;s poblados de Catalunya. Selecciona cada l&iacute;nea para conocer m&aacute;s detalles como el porcentaje de voto a cada partido y la diferencia entre 2021 y 2024.
    </p><figure class="embed-container embed-container--type-embed ">
    
            <link href="https://fonts.googleapis.com/css?family=Encode+Sans:400,700|Roboto:400,500,700&display=swap"
    rel="stylesheet">
<link rel="stylesheet" href="https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/charts_12m.css">
<script src="https://d3js.org/d3.v4.js"></script>
<script src='https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/charts_12m_min.js'></script>
<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>

<br><!-- título -->
<h4 class="chart_title_12m">Así sube o
    baja el voto a cada partido respecto a 2021 en las elecciones del 12M

</h4>
<p class="chart_subtitle_12m">Comparación
    del voto a cada partido entre las elecciones autonómicas de 2021 y 2024 en los municipios más poblados.
    Haz click para ver más detalle
</p>

<div style="width: 100%; margin: 0 auto; text-align: center; margin-bottom: 10px;font-family:'Encode Sans',sans-serif;">
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #e02020; padding-left: 4px; margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">PSC</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #40B6A4; padding-left: 4px; margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">Junts</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #FFB232; padding-left: 4px; margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">ERC</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #AAD656; padding-left: 4px;margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">Vox</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #FFED00; padding-left: 4px;margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">CUP</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #A54290; padding-left: 4px;margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">Comuns</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #EA8046; padding-left: 4px; margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">Cs</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #02a2dd; padding-left: 4px; margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">PP</span>
    </div>
    <div class="partido-leyenda"
    style="display: inline-block; border-left: 4px solid #10245b; padding-left: 4px; margin-right:20px; margin-bottom: 12px; text-align:left;">
    <span style="display: block;">AC</span>
</div>





</div>
<div id="contenedor-variacion-partidos">
    <div id="variacion-partidos-ccaa"></div>
    <div id="buttoncollapse">+ Ver el resto de municipios</div>
</div>

<p style="font-size:12px;text-align:left;font-family:'Encode Sans',sans-serif;line-height:20px;color:#181818;">Fuente:
    Generalitat de Catalunya</p>

<br>

<script>
    (function () {
        var eslocale = d3.timeFormatLocale({
            "dateTime": "%A, %e de %B de %Y, %X",
            "date": "%d/%m/%Y",
            "time": "%H:%M:%S",
            "periods": ["AM", "PM"],
            "days": ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"],
            "shortDays": ["dom", "lun", "mar", "mié", "jue", "vie", "sáb"],
            "months": ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto",
                "septiembre",
                "octubre",
                "noviembre", "diciembre"
            ],
            "shortMonths": ["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov",
                "dic"
            ]
        })


        //Read the data
        d3.text('https://elecciones-api.eldiario.es/data/2405/autonomicasC09_municipality_merge.csv',
            function (err, data) {
                var dsv = d3.dsvFormat(';')
                var data = dsv.parse(data)

                var filtereddata = data.filter(function (d) {
                    return (d.vganador > 0 &
                        d.censo > 30000 &
                        d.id.length < 6 &
                        (d.provincia == "08" | d.provincia == "17" | d.provincia == "25" | d
                            .provincia == "43"))
                })
                // group the data: I want to draw one line per group
                var sumstat = d3.nest() // nest function allows to group the calculation per level of a factor
                    .key(function (d) {
                        return d.nombre ==
                            "Esplugues de Llobregat" ? "Esplugues Llob." : d.nombre ==
                            "Santa Coloma de Gramenet" ? "Sta. Coloma Gr." : d.nombre ==
                            "Sant Feliu de Llobregat" ? "St. Feliu de Llob." : d.nombre ==
                            "Vilafranca del Penedès" ? "Vilafranca Pen." : d.nombre ==
                            "Hospitalet de Llobregat, l'" ? "L'Hospi. Llob." : d.nombre ==
                            "Cornellà de Llobregat" ? "Cornellà Llob." : d.nombre ==
                            "Sant Boi de Llobregat" ? "Sant Boi Llob." : d.nombre == "Sant Pere de Ribes" ?
                            "St. Pere Ribes" : d.nombre == "Sant Vicenç dels Horts" ? "St. Vicenç Horts" :
                            d.nombre == "Sant Cugat del Vallès" ? "St. Cugat Vallès" : d.nombre ==
                            "Sant Adrià de Besòs" ? "St. Adrià Besòs" : d.nombre ==
                            "Cerdanyola del Vallès" ? "Cerdanyola del V." : d.nombre ==
                            "Vilanova i la Geltrú" ? "Vilanova i la Gel." : d.nombre;
                    })
                    .entries(filtereddata);

                sumstat.forEach(function (s) {
                    s.censoTotal = d3.max(s.values, function (d) {
                        return +d.censo;
                    });
                    s.abstencion = d3.max(s.values, function (d) {
                        return +d.abstencion;
                    });

                });

                sumstat.sort(function (x, y) {
                    return d3.descending(x.censoTotal, y.censoTotal);
                })


                var locale = d3.formatLocale({
                    decimal: ",",
                    thousands: ".",
                    grouping: [3]
                });

                createEvolParties(sumstat, filtereddata)





            })
    })();
</script>
    </figure><p class="article-text">
        <strong>&iquest;Cambi&oacute; el voto respecto a anteriores elecciones?</strong> El siguiente gr&aacute;fico permite conocer c&oacute;mo cambi&oacute; el voto desde que se celebraron las primeras elecciones auton&oacute;micas en Catalu&ntilde;a, en 1980, hasta la actualidad. Para poder ver la evoluci&oacute;n del voto a cada partido, las candidaturas se han clasificado a pesar de sus cambios de denominaci&oacute;n. Adem&aacute;s, solo se incluyen las que hayan obtenido al menos un 3% de los votos en alguna circunscripci&oacute;n en alg&uacute;n comicio auton&oacute;mico o que hayan obtenido esca&ntilde;os alguna vez.
    </p><figure class="embed-container embed-container--type-embed ">
    
            <!-- Lo¡d3.js -->
<script src="https://d3js.org/d3.v4.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://unpkg.com/d3-simple-slider"></script>
<script src="https://cdn.jsdelivr.net/npm/d3-delaunay@6"></script>
<link rel="stylesheet" href="https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/charts_12m.css">
<link href="https://fonts.googleapis.com/css?family=Roboto:400,700|Encode+Sans:400,500,700&display=swap"
    rel="stylesheet">


<br><!-- título -->
<h4 class="chart_title_12m">Cómo ha
    cambiado el voto en Catalunya desde 1980
</h4>
<p class="chart_subtitle_12m">Evolución
    del porcentaje de voto respecto al total de votos a candidaturas en todas las
    elecciones autonómicas celebradas en Catalunya
</p>

<div id="button-voto-historico">
    <button id="button-porcentaje-historico" class="button-porcentaje-historico  button-voto-historico-active">% de
        voto</button>
    <button id="button-votos-historico" class="button-votos-historico">Nº de
        votos</button>
    <button id="button-diputados-historico" class="button-diputados-historico">Diputados</button>
</div>


<div id="contenedor-voto-historico">
    <div id="curvas-voto-historico"></div>
</div>


<p style="font-size:12px;text-align:left;font-family:'Encode Sans',sans-serif;line-height:20px;color:#181818;"><i>Solo
        se muestran las candidaturas que en algún comicio sacaron más del 3% de los votos o obtuvieron escaños</i>.
    Fuente: Generalitat de Catalunya</p>

<br>
<style>
    #contenedor-voto-historico {
        width: 100%;
        cursor: pointer
    }

    #curvas-voto-historico {
        width: 100%
    }

    #curvas-voto-historico text {
        font-size: 14px;
        font-family: 'Encode Sans', sans-serif
    }

    #curvas-voto-historico .nombre-pais-curva {
        font-size: 14px;
        font-family: 'Encode Sans', sans-serif;
        fill: #333333;
        font-weight: 700
    }

    #curvas-voto-historico .ncasostotales {
        font-size: 11px;
        font-family: 'Encode Sans', sans-serif;
        fill: #939393;

    }

    #curvas-voto-historico .eje-vertical-voto-historico line {
        stroke: #c5c5c5;
        stroke-dasharray: 3;
        stroke-width: 0.5;
    }

    #curvas-voto-historico .eje-vertical-voto-historico text {
        fill: #939393;
    }

    #curvas-voto-historico .eje-vertical-voto-historico path {
        stroke-width: 0;
    }


    #curvas-voto-historico .eje-horizontal path {
        stroke-width: 0;
    }

    #curvas-voto-historico .eje-horizontal text {
        fill: #939393;
    }


    #curvas-voto-historico .eje-horizontal line {

        stroke: #939393;
        stroke-width: 1;
    }



    /* GRAFICO EVOLUCION VOTOS */

    #button-voto-historico {
        text-align: center;
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
    }

    #button-voto-historico button {
        cursor: pointer;
        outline: none
    }

    #button-voto-historico button:focus {
        cursor: pointer;
        outline: none
    }

    #button-voto-historico .buttongiraderecha {
        color: black;
        max-width: 200px;
        height: 30px;
        border: 2px solid #c5c5c5;
        font-family: 'Encode Sans', sans-serif;
        font-size: 14px;
        margin-bottom: 5px;
        opacity: 1;
        margin: 5px 3px;
        background-color: white;
    }

    #button-voto-historico .button-porcentaje-historico {
        color: black;
        max-width: 200px;
        height: 30px;
        border: 2px solid #c5c5c5;
        font-family: 'Encode Sans', sans-serif;
        font-size: 14px;
        margin-bottom: 5px;
        opacity: 1;
        margin: 5px 3px;
        background-color: white;
    }


    #button-voto-historico .button-votos-historico {
        color: black;
        max-width: 200px;
        height: 30px;
        border: 2px solid #c5c5c5;
        font-family: 'Encode Sans', sans-serif;
        font-size: 14px;
        margin-bottom: 5px;
        opacity: 1;
        margin: 5px 3px;
        background-color: white;
    }


    #button-voto-historico .button-diputados-historico {
        color: black;
        max-width: 200px;
        height: 30px;
        border: 2px solid #c5c5c5;
        font-family: 'Encode Sans', sans-serif;
        font-size: 14px;
        margin-bottom: 5px;
        opacity: 1;
        margin: 5px 3px;
        background-color: white;
    }


    #button-voto-historico .buttongiraizquierda {
        color: black;
        max-width: 200px;
        height: 30px;
        border: 2px solid #c5c5c5;
        font-family: 'Encode Sans', sans-serif;
        font-size: 14px;
        margin-bottom: 5px;
        opacity: 1;
        margin: 5px 3px;
        background-color: white;
    }



    #button-voto-historico .button-voto-historico-active {
        border: 2px solid #005695;
        background-color: #005695;
        color: white;

        opacity: 1;
    }




    .columna-datos-eldiarioes {
        text-align: right;
        padding-bottom: 0px;
        padding-top: 0px;
        border-bottom: 1px solid #ddd;

    }

    .primeracolumna-eldiarioes {
        border-bottom: 1px solid #ddd;
        padding-bottom: 0px;
        padding-top: 0px;

    }
</style>

<script>
    var eslocale = d3.timeFormatLocale({
        "dateTime": "%A, %e de %B de %Y, %X",
        "date": "%d/%m/%Y",
        "time": "%H:%M:%S",
        "periods": ["AM", "PM"],
        "days": ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"],
        "shortDays": ["dom", "lun", "mar", "mié", "jue", "vie", "sáb"],
        "months": ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto",
            "septiembre",
            "octubre",
            "noviembre", "diciembre"
        ],
        "shortMonths": ["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov",
            "dic"
        ]
    })

    // set the dimensions and margins of the graph
    var totalWidth = document.getElementById("contenedor-voto-historico").offsetWidth;


    var margin = {
            top: 20,
            right: 20,
            bottom: 30,
            left: 50
        },
        width = totalWidth - margin.left - margin.right
    height = 500 - margin.top - margin.bottom;
    var parseTime = d3.timeParse("%Y-%m");


    var locale = d3.formatLocale({
        decimal: ",",
        thousands: ".",
        grouping: [3]
    });

    d3.queue()
        .defer(d3.json, "https://elecciones-api.eldiario.es/data/2405/autonomicasC09.json")
        .defer(d3.json, "https://elecciones-api.eldiario.es/data/2405/autonomicasC09_partidos.json")
        .defer(d3.csv,
            "https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/historico_partidos_catalunya.csv"
        )
        .await(function (err, resultselectionvotes, partieslistvotes, data) {




            var data2024votes = [];

            Object.keys(resultselectionvotes[9999].v).forEach((b) => {
                var resultData = {};
                resultData['eleccion'] = "2024-05";
                resultData['nombre_cand'] = partieslistvotes[b].sigla;
                resultData['nombre_cand_agrupado'] = partieslistvotes[b].sigla;
                resultData['color'] = partieslistvotes[b].color;
                resultData['votos'] = resultselectionvotes[9999]["v"][b].v
                resultData['ptg'] = resultselectionvotes[9999]["v"][b].p / 100
                resultData['escanios'] = resultselectionvotes[9999]["v"][b].s
                resultData['porcentajedip'] = resultselectionvotes[9999]["v"][b].s / 135 * 100

                data2024votes.push(resultData);
            });


            data2024votes = data2024votes.filter(function (d) {
                return d.ptg > 2 | d.seats > 0
            }).flat()



            data.push(...data2024votes);


            // group the data: I want to draw one line per group
            sumstatmuni = d3.nest() // nest function allows to group the calculation per level of a factor
                .key(function (d) {
                    return d.nombre_cand_agrupado;
                })
                .entries(data);


            var activevariable = "ptg"

            // Add an svg element for each group. The will be one beside each other and will go on the next row when no more room available
            var svg = d3.select("#curvas-voto-historico")
                .append("svg")
                .attr("width", width + margin.left + margin.right)
                .attr("height", height + margin.top + margin.bottom)
                .append("g")
                .attr("class", "grafico-individual-voto-historico")

                .attr("transform",
                    "translate(" + margin.left + "," + margin.top + ")");

            // Add X axis --> it is a date format
            var x = d3.scaleTime()
                .domain([parseTime("1980-01"), parseTime("2024-05")])
                .range([0, width]);
            svg
                .append("g")
                .attr("class", "eje-horizontal")
                .attr("transform", "translate(0," + height + ")")
                .call(d3.axisBottom(x)
                    .ticks(totalWidth > 600 ? 4 : 4).tickSizeOuter(0)
                    .tickFormat(function (date) {
                        if (d3.timeYear(date) < date) {
                            return eslocale.format("%b")(date);
                        } else {
                            return eslocale.format("%Y")(date);
                        }
                    }));

            //Add Y axis
            var y = d3.scaleLinear()
                .domain([0, d3.max(data, function (d) {
                    return +d[activevariable]
                })])
                .range([height, 0]);
            svg.append("g")
                .attr("class", "eje-vertical-voto-historico")
                .call(d3.axisLeft(y)
                    .ticks(5)
                    .tickSize(-width)
                    .tickSizeOuter(0)
                    .tickFormat(function (d) {
                        return d + "%";
                    })
                );



            svg.selectAll(".line")
                .data(sumstatmuni)
                .enter()
                .append("path")
                .attr("fill", "none")
                .attr("stroke", function (d) {
                    return d.values[0].color
                })
                .attr("stroke-width", 1.5)
                .attr("class", function (d) {
                    return "linea-curva-partido"
                })
                .attr("d", function (d) {
                    return d3.line()
                        .x(function (s) {
                            return x(parseTime(s.eleccion));
                        })
                        .y(function (s) {
                            return y(+s[activevariable]);
                        })
                        .defined(function (s) {
                            return s[activevariable] !== "";
                        })(d.values)

                });


            var circles = svg.selectAll(".circle")
                .data(data)
                .enter()
                .append("circle")
                .attr("class", "circulos-voto-historico")
                .attr("cx", function (d, i) {
                    return x(parseTime(d
                        .eleccion)) // use the fields directly; no reference to "values"
                })
                .attr("cy", function (d) {
                    return y(d[activevariable]);
                })
                .attr("r", function (d) {
                    return 5;
                })
                .style("fill", function (d) {
                    return d.color
                })
                .style("fill-opacity", 1)
                .style("stroke", function (d) {
                    return d.color
                })
                .style("pointer-events", "none")
                .style("cursor", "pointer");

            svg
                .selectAll(".label-texto-voto-historico")
                .data(data)
                .enter()
                .append('text')
                .attr("class", function (d) {
                    return "label-texto-voto-historico"
                }).text(function (d) {
                    return d.nombre_cand
                })
                .attr('alignment-baseline', 'middle')
                .attr('text-anchor', 'end')
                .attr("fill", (function (d) {
                    return d.color
                }))
                .style("display", (function (d) {
                    return (d.nombre_cand == "CiU" & d.eleccion == "1984-04") |
                        (d.nombre_cand == "PSC" & d.eleccion == "1995-11") |
                        (d.nombre_cand == "JxSí" & d.eleccion == "2015-09") |
                        (d.nombre_cand == "Cs" & d.eleccion == "2017-12") |
                        (d.nombre_cand == "CiU" & d.eleccion == "2012-11") |
                        (d.nombre_cand == "ERC" & d.eleccion == "2024-05") |
                        (d.nombre_cand == "PP" & d.eleccion == "1995-11") |
                        (d.nombre_cand == "Junts" & d.eleccion == "2024-05") |
                        (d.nombre_cand == "PSC" & d.eleccion == "2024-05") |
                        (d.nombre_cand == "ERC" & d.eleccion == "2003-11") |
                        (d.nombre_cand == "ARALAR" & d.eleccion == "2005-04") |
                        (d.nombre_cand == "ICV-EUiA" & d.eleccion == "2006-11") |
                        (d.nombre_cand == "PP" & d.eleccion == "2021-02") |
                        (d.nombre_cand == "UCD" & d.eleccion == "1980-03") |
                        (d.nombre_cand == "PCE-EPK" & d.eleccion == "1984-02") |
                        (d.nombre_cand == "CDS" & d.eleccion == "1990-10") |
                        (d.nombre_cand == "Cs" & d.eleccion == "2016-09") |
                        (d.nombre_cand == "Vox" & d.eleccion == "2016-09") |
                        (d.nombre_cand == "UPyD" & d.eleccion == "2009-03") |
                        (d.nombre_cand == "U.AL." & d.eleccion == "1994-10") |
                        (d.nombre_cand == "EAJ-PNV" & d.eleccion == "2024-04") |
                        (d.nombre_cand == "PP" & d.eleccion == "2024-04") |
                        (d.nombre_cand == "PSE-PSOE" & d.eleccion == "2024-04") |
                        (d.nombre_cand == "Vox" & d.eleccion == "2020-07") ? "block" : "none"
                }))
                .attr('x', (function (d) {
                    return x(parseTime(d.eleccion)) - 8
                }))
                .attr('y', function (d) {
                    return y(d[activevariable]);
                })
                .style("stroke", "#ffffff")
                .style("stroke-width", "3px")
                .style("pointer-events", "none")
                .style("paint-order", "stroke");


            // Create the circle that travels along the curve of chart
            var focusvotopartido = svg
                .append('g')
                .attr("class", "focusvotopartido")
                .style("display", "block")
                .append('circle')
                .style("fill", "none")
                .attr("stroke", "#000000")
                .attr("stroke-width", 3)
                .attr('r', 6)
                .style("opacity", 0)
                .style("pointer-events", "none")



            // Create a rect on top of the svg area: this rectangle recovers mouse position
            var rect = svg
                .append('rect')
                .attr("class", "fondo-tooltip")
                .style("fill", "none")
                .style("pointer-events", "all")
                .attr('width', width)
                .attr('height', height)
                .on('mouseover', mouseover)
                .on('mousemove', mousemove)
                .on('mouseout', mouseout);



            var tooltipWidth = totalWidth > 600 ? '200px' : '200px';
            var tooltipPosition = totalWidth > 600 ? 'absolute' : 'absolute';

            var tooltip = d3.select("body")
                .append("div")
                .attr("id", "tooltip-info")
                .style("position", tooltipPosition)
                .style("z-index", "10")
                .style("visibility", "hidden")
                .style("color", "black")
                .style("padding", "8px")
                .style("background-color", "white")
                .style("border-radius", "0px")
                .style("font-size", "12px")
                .style("pointer-events", "none")
                .style("font-family", "'Encode Sans', sans-serif")
                .style("box-shadow", "0 2px 2px 0 #ccc")
                .style("border", "1px solid #ccc")
                .style("margin-left", "2px")
                .style("line-height", "1.5");



            var delaunay = d3.Delaunay.from(data, d => x(parseTime(d.eleccion)), d => y(d[activevariable]))

            var radius = 50
            var find = (mx, my) => {
                var idx = delaunay.find(mx, my);

                if (idx !== null) {
                    var datum = data[idx];
                    var d = distance(x(parseTime(datum.eleccion)), y(datum[activevariable]),
                        mx, my);

                    return d < radius ? datum : null;
                }

                return null;
            }

            var distance = (px, py, mx, my) => {
                var a = px - mx;
                var b = py - my;

                return Math.sqrt(a * a + b * b);
            }

            function mouseover(d) {
                focusvotopartido.style("opacity", 1)

            }



            function mousemove(d) {

                var [mx, my] = d3.mouse(d3.select(this).node());
                var hover = find(mx, my);



                if (!hover) return mouseout();

                var linea = hover.nombre_cand_agrupado

                focusvotopartido.style("opacity", 1)

                focusvotopartido
                    .raise()
                    .attr("cx", x(parseTime(hover.eleccion)))
                    .attr("cy", function (symbol) {
                        return y(+hover[activevariable])
                    })

                d3.selectAll(".circulos-voto-historico")
                    .transition()
                    .duration(50)
                    .attr("opacity", function (d) {
                        return d.nombre_cand_agrupado == hover.nombre_cand_agrupado ?
                            1 : 0.1
                    })


                d3.selectAll(".linea-curva-partido").transition()
                    .duration(50)
                    .attr("opacity", function (d) {
                        return d.key == hover.nombre_cand_agrupado ? 1 : 0.1
                    })


                d3.selectAll(".label-texto-voto-historico")
                    .transition()
                    .duration(50)
                    .attr("opacity", function (d) {
                        return d.nombre_cand_agrupado == hover.nombre_cand_agrupado ?
                            1 : 0.1
                    })


                var fecha = eslocale.format("%b de %Y")(parseTime(hover.eleccion));
                var nombre_cand = hover.nombre_cand;
                var votos = locale.format(",d")(hover.votos);
                var ptg = locale.format(".1f")(hover.ptg);
                var escanios = locale.format(",d")(hover.escanios);
                var ptgdip = locale.format(".1f")(hover.escanios / 135 * 100);
                var difvotdip = locale.format("+.1f")(hover.difvotdip);
                var votos = locale.format(",d")(hover.votos);




                tooltip.transition()
                    .duration(0)
                    .style("opacity", 1);
                tooltip.html(
                    '<p style="display: block; text-align:left;margin-top:0px;margin-bottom:5px;font-size:16px;font-weight:bold;border-bottom:1px solid #c5c5c5;;color:' +
                    hover.color + '">' +
                    nombre_cand +
                    '</p><p style="display: block;text-align:left;margin-top:0px;margin-bottom:2px;font-size:12px;color:#6d6d6d">Elecciones <b>' +
                    fecha +
                    '</b><table style="border-collapse: collapse;height:70px;width:100%;margin-bottom:5px"><tr><th style="text-align:left"></th><th style="text-align:right">Nº</th><th style="text-align:right">%</th></tr><tr class="fila-tabla"><td class="primeracolumna-eldiarioes">Votos</td><td class="columna-datos-eldiarioes" style="color:#000000;">' +
                    votos +
                    '</td><td class="columna-datos-eldiarioes" style="color:#000000;font-weight:700">' +
                    ptg +
                    '%</td></tr><tr class="fila-tabla"><td class="primeracolumna-eldiarioes">Escaños</td><td class="columna-datos-eldiarioes" style="color:#000000;">' +
                    escanios +
                    '</td><td class="columna-datos-eldiarioes" style="color:#000000;font-weight:700">' +
                    ptgdip +
                    '%</td></tr></table>'
                );
                tooltip.style("visibility", "visible");
                tooltip.style('width', tooltipWidth);


                if (totalWidth > 600) {
                    if (d3.event.pageX > totalWidth / 1.5) {
                        return tooltip.style("top", (d3.event.pageY + 50) + "px").style(
                            "left",
                            (d3.event
                                .pageX - 200) +
                            "px");
                    }
                    return tooltip.style("top", (d3.event.pageY + 50) + "px").style(
                        "left",
                        (d3
                            .event
                            .pageX - 50) +
                        "px");
                } else {
                    return tooltip.style("top", (d3.event.pageY - 200) + "px").style(
                        "left",
                        "20%");
                }

            }


            function mouseout() {
                focusvotopartido.style("opacity", 0)


                d3.selectAll(".circulos-voto-historico")
                    .transition()
                    .duration(250)
                    .attr("opacity", 1)


                d3.selectAll(".linea-curva-partido").transition()
                    .duration(250)
                    .attr("opacity", 1)


                d3.selectAll(".label-texto-voto-historico")
                    .transition()
                    .duration(250)
                    .attr("opacity", 1)

                tooltip.transition()
                    .duration(20)
                    .style("opacity", 0);
                var $tooltip = $("#tooltip");
                $tooltip.empty();
            }


            d3.select("#button-porcentaje-historico").on("click", function () {
                activevariable = "ptg"
                changeHistoricVariable(activevariable, ".0f", "%")

                d3.selectAll(".button-voto-historico-active")
                    .classed("button-voto-historico-active", false);

                d3.selectAll(".button-porcentaje-historico")
                    .classed("button-voto-historico-active", true);
            })



            d3.select("#button-votos-historico").on("click", function () {
                activevariable = "votos"
                changeHistoricVariable(activevariable, ",.2s", "")

                d3.selectAll(".button-voto-historico-active")
                    .classed("button-voto-historico-active", false);

                d3.selectAll(".button-votos-historico")
                    .classed("button-voto-historico-active", true);
            })



            d3.select("#button-diputados-historico").on("click", function () {
                activevariable = "escanios"
                changeHistoricVariable(activevariable, ".0f", " dip.")

                d3.selectAll(".button-voto-historico-active")
                    .classed("button-voto-historico-active", false);

                d3.selectAll(".button-diputados-historico")
                    .classed("button-voto-historico-active", true);
            })


            function changeHistoricVariable(activevariable, formatNumber, sufixNumber) {
                var maxvariable = d3.max(data, function (d) {
                    return +d[activevariable]
                })

                y = d3.scaleLinear()
                    .domain([0, maxvariable])
                    .range([height, 0]);

                d3.selectAll(".grafico-individual-voto-historico").transition()
                    .duration(500)
                    .select(".eje-vertical-voto-historico")
                    .call(d3.axisLeft(y)
                        .ticks(5)
                        .tickSize(-width)
                        .tickSizeOuter(0)
                        .tickFormat(function (d) {
                            return locale.format(formatNumber)(d) +
                                sufixNumber;
                        })
                    );


                circles
                    .transition() // <---- Here is the transition
                    .duration(500) // 2 seconds
                    .attr("cx", function (d, i) {
                        return x(parseTime(d
                            .eleccion)) // use the fields directly; no reference to "values"
                    })
                    .attr("cy", function (d) {
                        return y(d[activevariable]);
                    })

                d3.selectAll(".linea-curva-partido")
                    .transition() // <---- Here is the transition
                    .duration(500) // 2 seconds
                    .attr("d", function (d) {
                        return d3.line()
                            .x(function (s) {
                                return x(parseTime(s.eleccion));
                            })
                            .y(function (s) {
                                return y(+s[activevariable]);
                            })
                            .defined(function (s) {
                                return s[activevariable] !== "";
                            })(d.values)

                    });


                delaunay = d3.Delaunay.from(data, d => x(parseTime(d.eleccion)), d => y(d[activevariable]))

                radius = 50
                find = (mx, my) => {
                    var idx = delaunay.find(mx, my);

                    if (idx !== null) {
                        var datum = data[idx];
                        var d = distance(x(parseTime(datum.eleccion)), y(datum[activevariable]),
                            mx, my);

                        return d < radius ? datum : null;
                    }

                    return null;
                }

                d3.selectAll(".label-texto-voto-historico")
                    .transition() // <---- Here is the transition
                    .duration(500) // 2 seconds
                    .attr('x', (function (d) {
                        return x(parseTime(d.eleccion)) - 8
                    }))
                    .attr('y', function (d) {
                        return y(d[activevariable]);
                    })

            }




        })
</script>
    </figure><p class="article-text">
        <strong>Este mapa muestra, municipio a municipio, d&oacute;nde suben y bajan los votos a cada partido:</strong> <span style="background-color:#E02020;color:white;padding:0px 2px;">PSC</span>, <span style="background-color:#FFB232;color:white;padding:0px 2px;">ERC</span>, <span style="background-color:#40B6A4;color:white;padding:0px 2px;">Junts</span>, <span style="background-color:#AAD656;color:white;padding:0px 2px;">Vox</span>, <span style="background-color:#FFED00;color:black;padding:0px 2px;">CUP</span>, <span style="background-color:#A54290;color:white;padding:0px 2px;">Comuns</span>, <span style="background-color:#EA8046;color:white;padding:0px 2px;">Cs</span>, <span style="background-color:#02A2DD;color:white;padding:0px 2px;">PP</span> y <span style="background-color:#10245b;color:white;padding:0px 2px;">Alian&ccedil;a C.</span>. El tama&ntilde;o del cuadrado indica el n&uacute;mero de habitantes. Las flechas permiten conocer la variaci&oacute;n del voto respecto a las elecciones de 2021. Si la flecha sube&#11014;, ha aumentado el porcentaje de voto. Si la flecha est&aacute; en gris y baja &#11015;, el partido ha perdido peso electoral.
    </p><figure class="embed-container embed-container--type-embed ">
    
            <script src="https://d3js.org/d3.v4.min.js"></script>
  <script src="https://unpkg.com/topojson-client@3"></script>
  <script src="https://d3js.org/topojson.v3.min.js"></script>
  <script src="https://unpkg.com/d3-composite-projections@1.2.0"></script>
  <script src="https://d3js.org/d3-queue.v3.min.js"></script>
  <link href="https://fonts.googleapis.com/css?family=Encode+Sans:400,700|Roboto:400,500,700&display=swap"
    rel="stylesheet">
  <script src=" https://cdnjs.cloudflare.com/ajax/libs/d3-legend/2.25.6/d3-legend.js" type="text/javascript"></script>


  <style>
    #tooltip-contenedor-mapa h3 {
      margin-bottom: 5px;
      margin-top: 5px;
      font-size: 14px
    }

    #tooltip-contenedor-mapa .columna-datos {
      text-align: right;
      padding-bottom: 0px;
      padding-top: 0px;
      border-bottom: 1px solid #ddd;

    }

    #tooltip-contenedor-mapa .primeracolumna {
      border-bottom: 1px solid #ddd;
      padding-bottom: 0px;
      padding-top: 0px;

    }

    #tooltip-contenedor-mapa p {
      font-size: 12px
    }


    .legendPartidosVoto {
      font-family: 'Encode Sans';
      font-size: 12px
    }

    #legend-partido-variacion-voto {
      font-family: 'Encode Sans';
      font-size: 12px;
      font-weight: 700
    }

    #container-button-mapa {
      text-align: center;
      display: flex;
      flex-wrap: wrap;
      font-family: 'Encode Sans';
      justify-content: center;
    }

    #div-containers-mapa {
      display: flex;
      flex-direction: row;
    }

    #container-cartograma-mapa {
      width: 50%
    }

    #container-flechas-mapa {
      width: 50%
    }


    #container-button-mapa #buttons-selector-partidos {
      display: flex;
      font-size: 16px !important;
      align-items: center;
      justify-content: center;
      flex-wrap: wrap;
      margin: 10px 0px;
      text-align: center;
      display: flex;
      flex-direction: row;
      flex-wrap: wrap;
      justify-content: center;
      gap: 15px;
    }

    #legend-partido-porcentaje-voto {
      position: absolute
    }

    #legend-partido-variacion-voto {
      position: absolute;
      margin: 20px;
    }



    #container-button-mapa .buttonpsoe {
      color: black;
      max-width: 200px;
      height: 30px;
      border: 2px solid #e02020;
      font-family: 'Encode Sans', sans-serif;
      font-size: 14px;
      margin-bottom: 5px;
      opacity: 0.4;
      margin-right: 0px;
      /* margin-left: -4px; */
    }




    #container-button-mapa .buttonpp {
      color: black;
      max-width: 200px;
      height: 30px;
      border: 2px solid #02A2DD;
      font-family: 'Encode Sans', sans-serif;
      font-size: 14px;
      margin-bottom: 5px;
      opacity: 0.4;
      margin-right: 0px;
      /* margin-left: -4px; */
    }

    #container-button-mapa .buttonvox {
      color: black;
      max-width: 200px;
      height: 30px;
      border: 2px solid #AAD656;
      font-family: 'Encode Sans', sans-serif;
      font-size: 14px;
      margin-bottom: 5px;
      opacity: 0.4;
      margin-right: 0px;
      /* margin-left: -4px; */
    }

    #container-button-mapa .buttonup {
      color: black;
      max-width: 200px;
      height: 30px;
      border: 2px solid #A54290;
      font-family: 'Encode Sans', sans-serif;
      font-size: 14px;
      margin-bottom: 5px;
      opacity: 0.4;
      margin-right: 0px;
      /* margin-left: -4px; */
    }



    #container-button-mapa .buttoncs {
      color: black;
      max-width: 200px;
      height: 30px;
      border: 2px solid #EA8046;
      font-family: 'Encode Sans', sans-serif;
      font-size: 14px;
      margin-bottom: 5px;
      opacity: 0.4;
      margin-right: 0px;
      /* margin-left: -4px; */
    }


    #container-button-mapa .buttoncup {
      color: black;
      max-width: 200px;
      height: 30px;
      border: 2px solid #FFED00;
      font-family: 'Encode Sans', sans-serif;
      font-size: 14px;
      margin-bottom: 5px;
      opacity: 0.4;
      margin-right: 0px;
      /* margin-left: -4px; */
    }



    #container-button-mapa .buttonalianza {
      color: black;
      max-width: 200px;
      height: 30px;
      border: 2px solid #10245b;
      font-family: 'Encode Sans', sans-serif;
      font-size: 14px;
      margin-bottom: 5px;
      opacity: 0.4;
      margin-right: 0px;
      /* margin-left: -4px; */
    }



    #container-button-mapa .buttonerc {
      color: black;
      max-width: 200px;
      height: 30px;
      border: 2px solid #FFB232;
      font-family: 'Encode Sans', sans-serif;
      font-size: 14px;
      margin-bottom: 5px;
      opacity: 0.4;
      margin-right: 0px;
      /* margin-left: -4px; */
    }

    #container-button-mapa .buttonjunts {
      color: black;
      max-width: 200px;
      height: 30px;
      border: 2px solid #40B6A4;
      font-family: 'Encode Sans', sans-serif;
      font-size: 14px;
      margin-bottom: 5px;
      opacity: 0.4;
      margin-right: 0px;
      /* margin-left: -4px; */
    }




    .labelsprov {
      font-family: 'Encode Sans', sans-serif;
      pointer-events: none;
      fill: #000000;
      stroke: none;
      font-weight: 400;
      text-transform: uppercase;
    }


    .shadowprov {

      font-family: 'Encode Sans', sans-serif;
      pointer-events: none;
      fill: black;
      stroke: none;
      stroke: white;
      stroke-width: 3px;
      opacity: 0.8;
      text-transform: uppercase;

    }



    @media (max-width: 900px) {


      #div-containers-mapa {
        display: flex;
        flex-direction: column;
      }

      #container-cartograma-mapa {
        width: 100%
      }

      #container-flechas-mapa {
        width: 100%
      }

    }

    #buttons-selector-partidos .button-mapa-active {
      color: black;
      opacity: 1;
      border-width: 3px;
    }


    #buttons-selector-partidos button {
      cursor: pointer;
    }

    #buttons-selector-partidos button:focus {
      outline: none;
    }



    .flechaazul {

      background-image: url(https://lab.eldiario.es/elections-maps/mapas-catalunya-14f/leyendas/arrowgreen.svg);
      width: 10px;
      height: 10px;
      background-repeat: no-repeat;
      background-position: center;
      background-size: 10px;
      display: inline-block
    }


    .flecharoja {

      background-image: url(https://lab.eldiario.es/elections-maps/mapas-catalunya-14f/leyendas/arrowred.svg);
      width: 10px;
      height: 10px;
      background-repeat: no-repeat;
      background-position: center;
      background-size: 10px;
      display: inline-block
    }

    .flechaigual {

      background-image: url(https://www.eldiario.es/documentos/Cfakepathigualsvg_EDIFIL20191025_0005.svg);
      width: 10px;
      height: 10px;
      background-repeat: no-repeat;
      background-position: center;
      background-size: 10px;
      display: inline-block
    }
  </style>

  <br><!-- título -->
  <h4 style="font-family:'Encode Sans',sans-serif;text-align:left;color:black;font-size:22px;font-weight:700">El voto a
    cada partido en las elecciones del 21A

  </h4>
  <p style="font-size:14px;text-align:left;font-family:'Encode Sans',sans-serif;line-height:20px;color:#181818">
    Porcentaje de voto
    y variación de voto a cada partido en cada municipio sobre 2021. El tamaño del cuadrado indica el número de
    habitantes
  </p>


  <div id="container-button-mapa">
    <div id="buttons-selector-partidos">
      <button id="buttonpsoe" class="buttonpsoe button-mapa-active">PSC</button>
      <button id="buttonerc" class="buttonerc">ERC</button>
      <button id="buttonjunts" class="buttonjunts">Junts</button>
      <button id="buttonvox" class="buttonvox">Vox</button>
      <button id="buttonup" class="buttonup">Comuns</button>
      <button id="buttoncup" class="buttoncup">CUP</button>
      <button id="buttoncs" class="buttoncs">Cs</button>
      <button id="buttonpp" class="buttonpp">PP</button>
      <button id="buttonalianza" class="buttonalianza">AC</button>

    </div>

  </div>


  <div id="div-containers-mapa">
    <div id="legend-partido-porcentaje-voto"></div>

    <div id="container-cartograma-mapa">
      <svg id="svg-cartograma-mapa" width="100%" height="700" fill="none" stroke="#000" stroke-linejoin="round"
        stroke-linecap="round" class="mapa-partidos-euskadi"
        style="position: relative; overflow: hidden;top: 0px; left: 0px; right:0px; bottom:0px"></svg>
    </div>

    <div id="container-flechas-mapa">

      <div id="legend-partido-variacion-voto"></div>

      <svg id="svg-flechas-mapa" width="100%" height="700" fill="none" stroke="#000" stroke-linejoin="round"
        stroke-linecap="round" class="mapa-partidos-euskadi"
        style="position: relative; overflow: hidden;top: 0px; left: 0px; right:0px; bottom:0px"></svg>
    </div>
  </div>

  <script>
    (function () {

      var eslocale = d3.timeFormatLocale({
        "dateTime": "%A, %e de %B de %Y, %X",
        "date": "%d/%m/%Y",
        "time": "%H:%M:%S",
        "periods": ["AM", "PM"],
        "days": ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"],
        "shortDays": ["dom", "lun", "mar", "mié", "jue", "vie", "sáb"],
        "months": ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto",
          "septiembre",
          "octubre",
          "noviembre", "diciembre"
        ],
        "shortMonths": ["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov",
          "dic"
        ]
      })


      var totalWidth = document.getElementById("container-cartograma-mapa").offsetWidth,
        isMobile = window.innerWidth < 900;


      var svgcartograma = d3.select("#svg-cartograma-mapa"),
        svgflechas = d3.select("#svg-flechas-mapa"),

        margin = {
          top: 0,
          right: 0,
          bottom: 0,
          left: 0
        },
        width = totalWidth - margin.left - margin.right,
        height = totalWidth > 900 ? width * 0.2 : width * 1.1,
        active = d3.select(null),
        posY = 0,
        posX = 0,
        // posY = $('svg').offset().top + $('svg').height(),
        // posX = $('svg').offset().left + $('svg').width(),
        padding = 0;


      // ajustes necesarios para ofrecer una mayor
      // definición en nuestro mapa canvas

      svgcartograma
        .attr("width", width + margin.left + margin.right)
        .attr("height", height + margin.top + margin.bottom)
        .style("margin-top", "0px")


      svgflechas
        .attr("width", width + margin.left + margin.right)
        .attr("height", height + margin.top + margin.bottom)
        .style("margin-top", "0px")


      var scaleMobile = width > 900 ? 5000 : width * 17;

      var projection = d3.geoMercator()
        .translate([width / 2, height / 2])
        .scale(scaleMobile)
        .center([1.7031, 41.7474]);

      var path = d3.geoPath()
        .projection(projection);

      var rangeMax = width > 900 ? 30 : width / 25;
      var radius = d3.scaleSqrt()
        .domain([0, 25000])
        .range([0, rangeMax]);



      var gruesolinea = d3.scaleThreshold()
        .domain([1000, 10000, 50000])
        .range([0.5, 1, 2, 3]);


      var colorlegend = d3.scaleLinear()
        .domain([10, 40])
        .range([d3.interpolateRgb("#ffffff", "#e02020")(0.2), "#e02020"]);


      var opacity = d3.scaleThreshold()
        .domain([0, 5, 10, 15, 20, 25, 30, 35])
        .range([0, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1]);


      var valordiferencia = 0.5


      var tooltipWidth = '300px';
      var tooltipPosition = 'absolute';

      var tooltip = d3.select("body")
        .append("div")
        .attr("id", "tooltip-info")
        .style("position", tooltipPosition)
        .style("z-index", "10")
        .style("visibility", "hidden")
        .style("color", "black")
        .style("padding", "8px")
        .style("background-color", "white")
        .style("border-radius", "0px")
        .style("font-size", "12px")
        .style("font-family", "'Encode Sans'")
        .style("box-shadow", "0 2px 2px 0 #ccc")
        .style("border", "1px solid #ccc")
        .style("margin-left", "2px")
        .style("pointer-events", "none")
        .style("line-height", "1.5");


      var g = svgcartograma.append("g");
      var gflechas = svgflechas.append("g");






      d3.json("https://elecciones-api.eldiario.es/data/maps/municipalities.json", function (
        error, spain) {
        if (error) throw error; // Manejamos cualquier posible error



        g.append("g")
          .attr("stroke", 'transparent')
          .attr("id", "provincias")
          .selectAll("path")
          .data(topojson.feature(spain, spain.objects.provinces).features.filter(function (d) {
            return d.id === '08' || d.id === '17' || d.id === '25' || d.id === '43'
          }))
          .enter().append("path")
          .attr("d", path)
          .attr("id", "provinciaspoligonos")
          .attr("class", "provinciaspoligonos")
          .attr('fill', '#f2f2f2')
          .attr('stroke', '#a5a5a5')
          .attr('stroke-width', '0.5px');


        gflechas.append("g")
          .attr("stroke", 'transparent')
          .attr("id", "provincias")
          .selectAll("path")
          .data(topojson.feature(spain, spain.objects.provinces).features.filter(function (d) {
            return d.id === '08' || d.id === '17' || d.id === '25' || d.id === '43'
          }))
          .enter().append("path")
          .attr("d", path)
          .attr("id", "provinciaspoligonos")
          .attr("class", "provinciaspoligonos")
          .attr('fill', '#f2f2f2')
          .attr('stroke', '#a5a5a5')
          .attr('stroke-width', '0.5px');

        loadCartogramData();


      });


      function loadCartogramData() {

        d3.queue()
          .defer(d3.json,
            "https://lab.eldiario.es/elections-maps/mapas-elecciones-28m/alcaldias/centroides-municipios-distritos-2023-final.json"
          )
          .defer(d3.text,
            "https://elecciones-api.eldiario.es/data/2405/autonomicasC09_municipality_merge.csv"
          ) // Load Unemployment TSV
          .await(ready);
      }


      function ready(error, es, datosmunis) {
        if (error) throw error;

        var dsv = d3.dsvFormat(';')
        var datosmunis = dsv.parse(datosmunis)




        var colorbloque = {}; // Create empty object for holding dataset
        var colorizqder = {}; // Create empty object for holding dataset
        var opacidadganador = {}; // Create empty object for holding dataset
        var opacidadbloque = {}; // Create empty object for holding dataset
        var vganador = {}; // Create empty object for holding dataset
        var vganador_prev = {}; // Create empty object for holding dataset
        var pganador = {}; // Create empty object for holding dataset
        var nombremunicipio = {}; // Create empty object for holding dataset
        var colours = {};
        var ganador = {}; // Create empty object for holding dataset
        var provincia = {};
        var abstencion = {};
        var escrutinio = {};
        var widthresto = {};
        var widthresto_prev = {};
        var abstencion_prev = {};
        var opacidad = {};
        var pp = {}
        var psoe = {}
        var up = {}
        var vox = {}
        var cs = {}
        var erc = {}
        var junts = {}
        var cup = {}
        var alianza = {}


        var pp_prev = {}
        var psoe_prev = {}
        var up_prev = {}
        var vox_prev = {}
        var cs_prev = {}
        var erc_prev = {}
        var junts_prev = {}
        var cup_prev = {}
        var alianza_prev = {}

        var flechapp = {}
        var flechapsoe = {}
        var flechaup = {}
        var flechavox = {}
        var flechacs = {}
        var flechaerc = {}
        var flechajunts = {}
        var flechacup = {}
        var flechaalianza = {}

        datosmunis.forEach(function (d) {


          opacidadganador[d.id] = d.pganador; // Create property for each ID, give it value from rate
          ganador[d.id] = d.ganador;
          vganador[d.id] = d.vganador;
          vganador_prev[d.id] = d.vganador_prev;


          nombremunicipio[d.id] = d.nombre;

          widthresto[d.id] = 100 - d.psoe - d.erc - d.cup - d.up - d.vox - d.pp - d.junts - d.alianza - d.cs;
          escrutinio[d.id] = d3.formatLocale({
            decimal: ",",
            thousands: "."
          }).format(".1f")(d.escrutinio);
          abstencion[d.id] = d3.formatLocale({
            decimal: ",",
            thousands: "."
          }).format(".1f")(d.abstencion);

          widthresto_prev[d.id] = 100 - d.psoe_prev - d.erc_prev - d.cup_prev - d.up_prev - d.vox_prev - d
            .pp_prev - d.junts_prev - d.alianza_prev - d.cs_prev;



          pp[d.id] = +d.pp;
          psoe[d.id] = +d.psoe;
          up[d.id] = +d.up;
          vox[d.id] = +d.vox;
          cs[d.id] = +d.cs;
          erc[d.id] = +d.erc;
          junts[d.id] = +d.junts;
          cup[d.id] = +d.cup;
          alianza[d.id] = +d.alianza;

          pp_prev[d.id] = +d.pp_prev;
          psoe_prev[d.id] = +d.psoe_prev;
          up_prev[d.id] = +d.up_prev;
          vox_prev[d.id] = +d.vox_prev;
          cs_prev[d.id] = +d.cs_prev;
          erc_prev[d.id] = +d.erc_prev;
          junts_prev[d.id] = +d.junts_prev;
          cup_prev[d.id] = +d.cup_prev;
          alianza_prev[d.id] = +d.alianza_prev;

          flechapp[d.id] = +d.vganador === 0 | +d.vganador_prev === 0 ? "-" :
            (+d.pp > +d.pp_prev) ? 'flechaazul' :
            (+d.pp === +d.pp_prev) ? 'flechaigual' :
            'flecharoja';
          flechapsoe[d.id] = +d.vganador === 0 | +d.vganador_prev === 0 ? "-" :
            (+d.psoe > +d.psoe_prev) ? 'flechaazul' :
            (+d.psoe === +d.psoe_prev) ? 'flechaigual' :
            'flecharoja';
          flechaup[d.id] = +d.vganador === 0 | +d.vganador_prev === 0 ? "-" :
            (+d.up > +d.up_prev) ? 'flechaazul' :
            (+d.up === +d.up_prev) ? 'flechaigual' :
            'flecharoja';
          flechavox[d.id] = +d.vganador === 0 | +d.vganador_prev === 0 ? "-" :
            (+d.vox > +d.vox_prev) ? 'flechaazul' :
            (+d.vox === +d.vox_prev) ? 'flechaigual' :
            'flecharoja';
          flechacs[d.id] = +d.vganador === 0 | +d.vganador_prev === 0 ? "-" :
            (+d.cs > +d.cs_prev) ? 'flechaazul' :
            (+d.cs === +d.cs_prev) ? 'flechaigual' :
            'flecharoja';
          flechaerc[d.id] = +d.vganador === 0 | +d.vganador_prev === 0 ? "-" :
            (+d.erc > +d.erc_prev) ? 'flechaazul' :
            (+d.erc === +d.erc_prev) ? 'flechaigual' :
            'flecharoja';
          flechajunts[d.id] = +d.vganador === 0 | +d.vganador_prev === 0 ? "-" :
            (+d.junts > +d.junts_prev) ? 'flechaazul' :
            (+d.junts === +d.junts_prev) ? 'flechaigual' :
            'flecharoja';
          flechacup[d.id] = +d.vganador === 0 | +d.vganador_prev === 0 ? "-" :
            (+d.cup > +d.cup_prev) ? 'flechaazul' :
            (+d.cup === +d.cup_prev) ? 'flechaigual' :
            'flecharoja';
          flechaalianza[d.id] = +d.vganador === 0 | +d.vganador_prev === 0 ? "-" :
            (+d.alianza > +d.alianza_prev) ? 'flechaazul' :
            (+d.alianza === +d.alianza_prev) ? 'flechaigual' :
            'flecharoja';

          abstencion_prev[d.id] = d3.formatLocale({
            decimal: ",",
            thousands: "."
          }).format(".1f")(d.abstencion_prev);


        });

        var nodes = es.features
          .filter((function (d) {
            return (d.properties.id.length < 6) & (d.properties.id.substr(0, 2) == "08" | d.properties.id.substr(
              0,
              2) == "17" | d.properties.id.substr(0, 2) == "25" | d.properties.id.substr(0, 2) == "43")
          }))
          .map(function (d) {
            var point = projection(d.geometry.coordinates),
              value = d.properties.poblacion / 20 + 1;

            var item = {
              x: point[0],
              y: point[1],
              x0: point[0],
              y0: point[1],
              r: radius(isMobile ? d.properties.poblacion / 20 + 1 : d.properties.poblacion /
                20 + 1, ),
              value: value,
              poblacion: d.properties.poblacion,
              municipio: d.properties.NAMEUNIT,
              colorbloque: colorbloque[d.properties.id],
              colorizqder: colorizqder[d.properties.id],
              opacidad: opacidad[d.properties.id],
              opacidadbloque: opacidadbloque[d.properties.id],
              provincia: d.properties.provincia,
              escrutinio: escrutinio[d.properties.id],
              abstencion: abstencion[d.properties.id],
              abstencion_prev: abstencion_prev[d.properties.id],
              vganador: vganador[d.properties.id],
              vganador_prev: vganador_prev[d.properties.id],


              widthresto: widthresto[d.properties.id],
              widthresto_prev: widthresto_prev[d.properties.id],

              pp: pp[d.properties.id],
              psoe: psoe[d.properties.id],
              vox: vox[d.properties.id],
              up: up[d.properties.id],
              cs: cs[d.properties.id],
              erc: erc[d.properties.id],
              junts: junts[d.properties.id],
              cup: cup[d.properties.id],
              alianza: alianza[d.properties.id],

              pp_prev: pp_prev[d.properties.id],
              psoe_prev: psoe_prev[d.properties.id],
              vox_prev: vox_prev[d.properties.id],
              up_prev: up_prev[d.properties.id],
              cs_prev: cs_prev[d.properties.id],
              erc_prev: erc_prev[d.properties.id],
              junts_prev: junts_prev[d.properties.id],
              cup_prev: cup_prev[d.properties.id],
              alianza_prev: alianza_prev[d.properties.id],


              flechapp: flechapp[d.properties.id],
              flechapsoe: flechapsoe[d.properties.id],
              flechavox: flechavox[d.properties.id],
              flechaup: flechaup[d.properties.id],
              flechacs: flechacs[d.properties.id],
              flechaerc: flechaerc[d.properties.id],
              flechajunts: flechajunts[d.properties.id],
              flechacup: flechacup[d.properties.id],
              flechaalianza: flechaalianza[d.properties.id],


            };

            return item;
          });


        var locale = d3.formatLocale({
          decimal: ",",
          thousands: ".",
          grouping: [3]
        });

        var legendSimplePartidos = d3
          .select("div#legend-partido-porcentaje-voto")
          .append("svg")
          .attr("width", "150px")
          .attr("height", 70)
          .append("g")
          .attr("class", "legendPartidosVoto")
          .attr("transform", "translate(10, 15)")


        // Cambios añadidos a le leyenda

        var legendPartidosVoto = d3.legendColor()
          .labels(["0%", "", "", "", "35%"])
          .title("Voto PSC (%)")
          .shapeWidth(15)
          .cells(5)
          .shapeHeight(10)
          .shapePadding(0)
          .orient('horizontal')
          .labelAlign("left")
          .scale(colorlegend);

        legendSimplePartidos.
        call(legendPartidosVoto);

        var legendVariacionVoto = d3.select("#legend-partido-variacion-voto").html(
          "<span style='color:#e02020'>↑ Sube el voto</span> - <span  style='color:#939393'>↓ Baja el voto </span>")


        var simulation = d3.forceSimulation(nodes)
          .force("x", d3.forceX(function (d) {
            return d.x0;
          }).strength(function (d) {
            return d.poblacion > 200000 ? 2 : 0.1;
          }))
          .force("y", d3.forceY(function (d) {
            return d.y0;
          }).strength(function (d) {
            return d.poblacion > 200000 ? 2 : 0.1;
          }))
          .force("collide", isMobile ? collideMobile : collide);


        for (let i = 0; i < 200; ++i) simulation.tick();




        var node = g.append("g")
          .selectAll("rect")
          .data(nodes)
          .enter().append("rect")
          .attr("class", "poligonos-cartograma-municipios")
          .attr("width", function (d) {
            return d.r * 2;
          })
          .attr("height", function (d) {
            return d.r * 2;
          })
          .attr("x", function (d) {
            return d.x - d.r;
          })
          .attr("y", function (d) {
            return d.y - d.r;
          })
          .style("fill", function (d) {
            return d.vganador > 0 ? d3.interpolateRgb("#ffffff", "#e02020")(opacity(+d.psoe)) : "#c5c5c5";
          })
          .style("fill-opacity", function (d) {
            return d.opacidadfalse;
          })
          .style('stroke', '#a5a5a5')
          .style('stroke-width', 0.5 + "px")
          .style("cursor", "pointer")
          .on("mouseover", mouseovermapa)
          .on("mousemove", mousemovemapa)
          .on("mouseout", mouseoutmapa);




        var marker = svgflechas.append('defs')
          .append('marker').attr('id', 'lineabaja')
          .attr('viewBox', '0 0 10 10')
          .attr('refX', 6)
          .attr('refY', 6)
          .attr('markerWidth', 5)
          .attr('markerHeight', 5)
          .attr('orient', 'auto')
          .attr('fill', '#999999')
          .attr('stroke', "#999999");
        marker.append('path')
          .attr("d", 'M2,2 L10,6 L2,10 L6,6 L2,2');



        var marker = svgflechas.append('defs')
          .append('marker').attr('id', 'lineasube')
          .attr('viewBox', '0 0 10 10')
          .attr('refX', 6)
          .attr('refY', 6)
          .attr('markerWidth', 6)
          .attr('markerHeight', 6)
          .attr('orient', 'auto')
          .attr('fill', '#e02020')
          .attr('stroke', "#e02020");
        marker.append('path')
          .attr("d", 'M2,2 L10,6 L2,10 L6,6 L2,2');



        var flechasnodes =
          gflechas.append("g")
          .selectAll("line")
          .data(nodes)
          .enter().append("line")
          .attr("class", "flechas-municipios")
          .style("display", function (d) {
            return +d.vganador === 0 | +d.vganador_prev === 0 | d.psoe === d.psoe_prev ? "none" : "block";
          })
          .attr("width", function (d) {
            return 2;
          })
          .attr("height", function (d) {
            return 2;
          })
          .style("stroke", function (d) {
            return d.psoe > d.psoe_prev ? "#e02020" : "#999999";
          })
          .style("fill", function (d) {
            return d.psoe > d.psoe_prev ? "#e02020" : "#999999";
          })
          .style("fill-opacity", 1)
          .attr("marker-end", function (d) {
            return d.psoe > d.psoe_prev ? "url(#lineasube)" : "url(#lineabaja)";
          })
          .style('stroke-width', function (d) {
            return isMobile ? gruesolinea(d.poblacion) : gruesolinea(d.poblacion)
          })

          .attr("x1", function (d) {
            return d.x0;
          })
          .attr("x2", function (d) {
            return d.x0;
          })
          .attr("y1", function (d) {
            return d.y0;
          })
          .attr("y2", function (d) {
            return d.psoe > d.psoe_prev ? d.y0 - (d.psoe - d.psoe_prev) / valordiferencia : d.y0 + (d
              .psoe_prev - d
              .psoe) / valordiferencia;
          })
          .style("cursor", "pointer")
          .on("mouseover", mouseovermapa)
          .on("mousemove", mousemovemapa)
          .on("mouseout", mouseoutmapa);



        labels = g.append("g")
          .selectAll('text')
          .data(nodes.filter(function (d) {
            return d.poblacion > 100000
          }))
          .enter().append("text")
          .style('font-family', 'sans-serif')
          .style('font-size', '11px')
          .attr('text-anchor', 'middle')
          .attr('alignment-baseline', 'middle')

          .attr("x", function (d) {
            return d.x;
          })
          .attr("y", function (d) {
            return d.y;
          })
          .text(function (d) {
            return d.municipio.substr(0, 3) == "A C" ? "Cor" : d.municipio.substr(0, 3);
          })
          .attr("class", "shadowprov")



        labels = g.append("g")
          .selectAll('text')
          .data(nodes.filter(function (d) {
            return d.poblacion > 100000
          }))
          .enter()
          .append('text')
          .style('font-family', 'sans-serif')
          .style('font-size', '11px')
          .attr('text-anchor', 'middle')
          .attr('alignment-baseline', 'middle')

          .attr("x", function (d) {
            return d.x;
          })
          .attr("y", function (d) {
            return d.y;
          })
          .text(function (d) {
            return d.municipio.substr(0, 3) == "A C" ? "Cor" : d.municipio.substr(0, 3);
          })
          .attr("class", "labelsprov")


        // var zoom = d3.zoom()
        //   .scaleExtent([1, 4])
        //   .translateExtent([
        //     [0, 0],
        //     [width, height]
        //   ])
        //   .on('zoom', zoomed);


        // svgcartograma.call(zoom);


        // function zoomed() {
        //   g
        //     .selectAll('line')
        //     .attr('transform', d3.event.transform);

        //   g
        //     .selectAll('path')
        //     .attr('transform', d3.event.transform);

        //   g
        //     .selectAll('text')
        //     .attr('transform', d3.event.transform);
        //   g
        //     .selectAll('rect')
        //     .attr('transform', d3.event.transform);
        // }



        function mouseovermapa(d) {
          var selectedclass = d3.select(this).attr("class")


          selectedclass === "poligonos-cartograma-municipios" ?
            d3.select(this.parentNode.appendChild(this))
            .style("stroke-width", 1 + "px")
            .style('stroke', 'black') : d3.select(this.parentNode.appendChild(this))
            .style("stroke-width", 4 + "px")
          tooltip.transition()
            .duration(0)
            .style("opacity", 1);
          tooltip.html(
            '<div id="tooltip-contenedor-mapa"><p style="display: block; text-align:left;margin-top:0px;margin-bottom:10px;font-size:14px;font-weight:bold;border-bottom:1px solid #c5c5c5;">' +
            d.municipio + '<span style="font-size:12px;font-weight:400"> (' + d.provincia +
            ')</span></p><div class="tooltip-table"><p style="margin-bottom:0px;height:16px"><b>2024</b> (Abst.:' +
            d.abstencion +
            '%)<span style="font-size:11px;float:right;color:grey;height:16px">' + d.escrutinio +
            '% esc.</span></p><div><div style="background-color:#e02020;height:12px;width:' +
            d.psoe +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#A54290;height:12px;width:' +
            d.up +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#ea8046;height:12px;width:' +
            d.cs +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#AAD656;height:12px;width:' +
            d.vox +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#02A2DD;height:12px;width:' +
            d.pp +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#c5c5c5;height:12px;width:' +
            d.widthresto +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#10245b;height:12px;width:' +
            d.alianza +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#FFED00;height:12px;width:' +
            d.cup +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#FFB232;height:12px;width:' +
            d.erc +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#40B6A4;height:12px;width:' +
            d.junts +
            '%;display:inline-block;font-size:0px;"></div></div><p style="margin-bottom:-3px;margin-top:0px;height:15px"><b>2021</b> (Abst.:' +
            d.abstencion_prev +
            '%)</p><div><div style="background-color:#e02020;height:8px;width:' +
            d.psoe_prev +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#A54290;height:8px;width:' +
            d.up_prev +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#ea8046;height:8px;width:' +
            d.cs_prev +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#AAD656;height:8px;width:' +
            d.vox_prev +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#02A2DD;height:8px;width:' +
            d.pp_prev +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#c5c5c5;height:8px;width:' +
            d.widthresto_prev +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#10245b;height:8px;width:' +
            d.alianza_prev +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#FFED00;height:8px;width:' +
            d.cup_prev +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#FFB232;height:8px;width:' +
            d.erc_prev +
            '%;display:inline-block;font-size:0px;"></div><div style="background-color:#40B6A4;height:8px;width:' +
            d.junts_prev +
            '%;display:inline-block;font-size:0px;"></div></div><table style="width:100%;border-spacing:2px;border-collapse:collapse"><tr><th style="text-align:left"><b>Cand.</b></th><th style="text-align:right"><b>2024</b></th><th style="text-align:right"><b>Dif.</b></th><th style="text-align:left;padding-left:15px"><b>Cand.</b></th><th style="text-align:right"><b>2024</b></th><th style="text-align:right"><b>Dif.</b></th></tr><tr style="border-bottom: 1px solid #ddd;"><td style="width:60px;"><span style="display: inline-block;width: 10px; height: 10px; background-color:#e02020; margin-right: 4px;margin-bottom:0px;"></span><span>PSC</span></td><td style="text-align:right;width:50px"><b>' +
            locale.format(".1f")(d.psoe) +
            '%</b></td><td style="text-align:right;width:60px">' + (+d.vganador > 0 & +d.vganador_prev != 0 ? locale
              .format("+.1f")(d.psoe - d.psoe_prev) : "-") +
            ' <div class="' +
            d.flechapsoe +
            '"></div></td><td style="width:60px;padding-left:15px"><span style="display: inline-block;width: 10px; height: 10px; background-color:#40B6A4; margin-right: 4px;margin-bottom:0px;"></span><span>Jun.</span></td><td style="text-align:right;width:50px"><b>' +
            locale.format(".1f")(d.junts) +
            '%</b></td><td style="text-align:right;width:60px">' + (+d.vganador > 0 & +d.vganador_prev != 0 ? locale
              .format("+.1f")(d.junts - d.junts_prev) : "-") +
            ' <div class="' +
            d.flechajunts +
            '"></div></td></tr><tr style="border-bottom: 1px solid #ddd;"><td style="width:60px;"><span style="display: inline-block;width: 10px; height: 10px; background-color:#FFB232; margin-right: 4px;margin-bottom:0px;"></span><span>ERC</span></td><td style="text-align:right;width:50px"><b>' +
            locale.format(".1f")(d.erc) +
            '%</b></td><td style="text-align:right;width:60px">' + (+d.vganador > 0 & +d.vganador_prev != 0 ? locale
              .format("+.1f")(d.erc - d.erc_prev) : "-") +
            ' <div class="' +
            d.flechaerc +
            '"></div></td><td style="width:60px;padding-left:15px"><span style="display: inline-block;width: 10px; height: 10px; background-color:#02A2DD; margin-right: 4px;margin-bottom:0px;"></span><span>PP</span></td><td style="text-align:right;width:50px"><b>' +
            locale.format(".1f")(d.pp) +
            '%</b></td><td style="text-align:right;width:60px">' + (+d.vganador > 0 & +d.vganador_prev != 0 ? locale
              .format("+.1f")(d.pp - d.pp_prev) : "-") +
            ' <div class="' +
            d.flechapp +
            '"></div></td></tr><tr style="border-bottom: 1px solid #ddd;"><td style="width:60px;"><span style="display: inline-block;width: 10px; height: 10px; background-color:#A54290; margin-right: 4px;margin-bottom:0px;"></span><span>Com.</span></td><td style="text-align:right;width:50px"><b>' +
            locale.format(".1f")(d.up) +
            '%</b></td><td style="text-align:right;width:60px">' + (+d.vganador > 0 & +d.vganador_prev != 0 ? locale
              .format("+.1f")(d.up - d.up_prev) : "-") +
            ' <div class="' +
            d.flechaup +
            '"></div></td><td style="width:60px;padding-left:15px"><span style="display: inline-block;width: 10px; height: 10px; background-color:#AAD656; margin-right: 4px;margin-bottom:0px;"></span><span>Vox</span></td><td style="text-align:right;width:50px"><b>' +
            locale.format(".1f")(d.vox) +
            '%</b></td><td style="text-align:right;width:60px">' + (+d.vganador > 0 & +d.vganador_prev != 0 ? locale
              .format("+.1f")(d.vox - d.vox_prev) : "-") +
            ' <div class="' +
            d.flechavox +
            '"></div></td></tr><tr style="border-bottom: 1px solid #ddd;"><td style="width:60px;"><span style="display: inline-block;width: 10px; height: 10px; background-color:#FFED00; margin-right: 4px;margin-bottom:0px;"></span><span>CUP</span></td><td style="text-align:right;width:50px"><b>' +
            locale.format(".1f")(d.cup) +
            '%</b></td><td style="text-align:right;width:60px">' + (+d.vganador > 0 & +d.vganador_prev != 0 ? locale
              .format("+.1f")(d.cup - d.cup_prev) : "-") +
            ' <div class="' +
            d.flechacup +
            '"></div></td><td style="width:60px;padding-left:15px"><span style="display: inline-block;width: 10px; height: 10px; background-color:#EA8046; margin-right: 4px;margin-bottom:0px;"></span><span>Cs</span></td><td style="text-align:right;width:50px"><b>' +
            locale.format(".1f")(d.cs) +
            '%</b></td><td style="text-align:right;width:60px">' + (+d.vganador > 0 & +d.vganador_prev != 0 ? locale
              .format("+.1f")(d.cs - d.cs_prev) : "-") +
            ' <div class="' +
            d.flechacs +
            '"></div></td></tr><tr style="border-bottom: 1px solid #ddd;"><td style="width:60px;"><span></span></td><td style="text-align:right;width:50px"></td><td style="text-align:right;width:60px"></div></td><td style="width:60px;padding-left:15px"><span style="display: inline-block;width: 10px; height: 10px; background-color:#10245b; margin-right: 4px;margin-bottom:0px;"></span><span>AC</span></td><td style="text-align:right;width:50px"><b>' +
            locale.format(".1f")(d.alianza) +
            '%</b></td><td style="text-align:right;width:60px">' + (+d.vganador > 0 & +d.vganador_prev != 0 ? locale
              .format("+.1f")(d.alianza - d.alianza_prev) : "-") +
            ' <div class="' +
            d.flechaalianza +
            '"></div></td></tr></table></div></div>'
          );
          tooltip.style("visibility", "visible");
          tooltip.style('width', tooltipWidth);
        }

        // cuando el ratón se mueve
        function mousemovemapa(d) {

          if (!isMobile) {
            if (d3.mouse(this)[0] > totalWidth / 2 & d3.mouse(this)[1] < height / 2) {
              return tooltip.style("top", (d3.event.pageY + 30) + "px").style("left", (d3.event
                  .pageX - 300) +
                "px");
            }
            if (d3.mouse(this)[0] > totalWidth / 2 & d3.mouse(this)[1] > height / 2) {
              return tooltip.style("top", (d3.event.pageY - 250) + "px").style("left", (d3.event
                  .pageX - 300) +
                "px");
            }
            if (d3.mouse(this)[0] < totalWidth / 2 & d3.mouse(this)[1] < height / 2) {
              return tooltip.style("top", (d3.event.pageY + 60) + "px").style("left", (d3.event
                  .pageX + 10) +
                "px");
            }
            return tooltip.style("top", (d3.event.pageY - 250) + "px").style("left", (d3.event
                .pageX + 10) +
              "px");
          } else {
            return tooltip.style("top", (d3.event.pageY + 60) + "px").style("left", "10%");
          }

        }



        // cuando el ratón desaparece
        function mouseoutmapa(d) {
          var selectedclass = d3.select(this).attr("class")
          selectedclass === "poligonos-cartograma-municipios" ?
            d3.select(this)
            .style('stroke', '#a5a5a5')
            .style('stroke-width', 0.5 + "px") :
            d3.select(this)
            .style('stroke-width', function (d) {
              return isMobile ? gruesolinea(d.poblacion) : gruesolinea(d.poblacion)
            })

          return tooltip.style("visibility", "hidden");
        }



        d3.select("#buttonpsoe").on("click", function () {
          changeColorParty("#e02020", "psoe", "psoe_prev", "PSC", "buttonpsoe")
        })

        d3.select("#buttonpp").on("click", function () {
          changeColorParty("#02A2DD", "pp", "pp_prev", "PP", "buttonpp")
        })

        d3.select("#buttonjunts").on("click", function () {
          changeColorParty("#40B6A4", "junts", "junts_prev", "Junts", "buttonjunts")
        })

        d3.select("#buttoncs").on("click", function () {
          changeColorParty("#EA8046", "cs", "cs_prev", "Cs", "buttoncs")
        })

        d3.select("#buttonerc").on("click", function () {
          changeColorParty("#FFB232", "erc", "erc_prev", "ERC", "buttonerc")
        })

        d3.select("#buttoncup").on("click", function () {
          changeColorParty("#FFED00", "cup", "cup_prev", "CUP", "buttoncup")
        })

        d3.select("#buttonup").on("click", function () {
          changeColorParty("#A54290", "up", "up_prev", "Comuns", "buttonup")
        })

        d3.select("#buttonvox").on("click", function () {
          changeColorParty("#AAD656", "vox", "vox_prev", "Vox", "buttonvox")
        })

        d3.select("#buttonalianza").on("click", function () {
          changeColorParty("#10245b", "alianza", "alianza_prev", "Aliança C.", "buttonalianza")
        })


        function changeColorParty(colorparty, party, party_prev, nombrepartido, buttonclass) {


          d3.select("#lineasube").transition() // change the line
            .duration(0)
            .attr('fill', colorparty)
            .attr('stroke', colorparty);


          // Make the changes
          d3.selectAll(".poligonos-cartograma-municipios").transition() // change the line
            .duration(750)
            .style("fill", function (d) {
              return d.vganador > 0 ? d3.interpolateRgb("#ffffff", colorparty)(opacity(+d[party])) : "#c5c5c5";
            });


          d3.selectAll(".flechas-municipios").transition() // change the line
            .duration(750)
            .style("display", function (d) {
              return +d.vganador === 0 | +d.vganador_prev === 0 | d[party] === d[party_prev] ? "none" : "block";
            })
            .style("stroke", function (d) {
              return d[party] > d[party_prev] ? colorparty : "#999999";
            })
            .attr("marker-end", function (d) {
              return d[party] > d[party_prev] ? "url(#lineasube)" : "url(#lineabaja)";
            })
            .attr("y2", function (d) {
              return d[party] > d[party_prev] ? d.y0 - (d[party] - d[party_prev]) / valordiferencia : d.y0 + (d[
                party_prev] - d[party]) / valordiferencia;
            });

          colorlegend = d3.scaleLinear()
            .domain([10, 40])
            .range([d3.interpolateRgb("#ffffff", colorparty)(0.2), colorparty]);


          legendPartidosVoto
            .labels(["0%", "", "", "", "35%"])
            .title("Voto " + nombrepartido + " (%)")
            .shapeWidth(15)
            .cells(5)
            .scale(colorlegend);
          legendSimplePartidos.
          call(legendPartidosVoto);

          legendVariacionVoto = d3.select("#legend-partido-variacion-voto").html(
            "<span style='color:" + colorparty +
            "'>↑ Sube el voto</span> - <span  style='color:#939393'>↓ Baja el voto </span>")


          d3.selectAll(".button-mapa-active")
            .classed("button-mapa-active", false);

          d3.selectAll("." + buttonclass)
            .classed("button-mapa-active", true);


        }






        function collide() {
          for (var k = 0, iterations = 1, strength = 0.3; k < iterations; ++k) {
            for (var i = 0, n = nodes.length; i < n; ++i) {
              for (var a = nodes[i], j = i + 1; j < n; ++j) {
                var b = nodes[j],
                  x = a.x + a.vx - b.x - b.vx,
                  y = a.y + a.vy - b.y - b.vy,
                  lx = Math.abs(x),
                  ly = Math.abs(y),
                  r = a.r + b.r + padding;
                if (lx < r && ly < r) {
                  if (lx > ly) {
                    lx = (lx - r) * (x < 0 ? -strength : strength);
                    a.vx -= lx, b.vx += lx;
                  } else {
                    ly = (ly - r) * (y < 0 ? -strength : strength);
                    a.vy -= ly, b.vy += ly;
                  }
                }
              }
            }
          }
        }



        function collideMobile() {
          for (var k = 0, iterations = 1, strength = 0.2; k < iterations; ++k) {
            for (var i = 0, n = nodes.length; i < n; ++i) {
              for (var a = nodes[i], j = i + 1; j < n; ++j) {
                var b = nodes[j],
                  x = a.x + a.vx - b.x - b.vx,
                  y = a.y + a.vy - b.y - b.vy,
                  lx = Math.abs(x),
                  ly = Math.abs(y),
                  r = a.r + b.r + padding;
                if (lx < r && ly < r) {
                  if (lx > ly) {
                    lx = (lx - r) * (x < 0 ? -strength : strength);
                    a.vx -= lx, b.vx += lx;
                  } else {
                    ly = (ly - r) * (y < 0 ? -strength : strength);
                    a.vy -= ly, b.vy += ly;
                  }
                }
              }
            }
          }
        }



      }
    })();
  </script>
    </figure><p class="article-text">
        En Catalu&ntilde;a, el sistema electoral perjudica a los partidos que tienen m&aacute;s fuerza en Barcelona, la provincia m&aacute;s poblada. Esto se debe a que existe una desproporci&oacute;n entre el n&uacute;mero de habitantes y el n&uacute;mero de esca&ntilde;os a repartir, beneficiando as&iacute; a los partidos en las regiones con menos habitantes: Girona, Lleida y Tarragona.&nbsp;
    </p><p class="article-text">
        Para medir a qu&eacute; partidos perjudic&oacute; y benefici&oacute; el sistema electoral, calculamos en directo las diferencias entre el porcentaje de esca&ntilde;os y el porcentaje de votos obtenido por todos los partidos que se han presentado a estos comicios.
    </p><figure class="embed-container embed-container--type-embed ">
    
            <script src="https://d3js.org/d3.v4.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto:400,700|Encode+Sans:400,500,700&display=swap"
    rel="stylesheet">
<link rel="stylesheet"
    href="https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/charts_12m.css">
<br><!-- título -->
<h4 class="chart_title_12m">Los partidos
    más beneficiados y perjudicados por el sistema electoral el 12M en Catalunya
</h4>
<p class="chart_subtitle_12m">
    Diferencia entre el porcentaje de escaños y el porcentaje de votos obtenido por cada partido las elecciones
    autonómicas en Catalunya el 12M
</p>
<div id="contenedor-curva-beneficiados-perjudicados-12m">
    <div id="beneficiados-perjudicados-12m"></div>
</div>
<p style="font-size:12px;text-align:left;font-family:'Encode Sans',sans-serif;line-height:20px;color:#181818;">Fuente:
    Generalitat de Catalunya</p>
<br>
<style>
    #contenedor-curva-beneficiados-perjudicados-12m {
        width: 100%;
    }

    #beneficiados-perjudicados-12m {
        width: 100%
    }

    #beneficiados-perjudicados-12m text {
        font-size: 14px;
        font-family: 'Encode Sans', sans-serif
    }

    #beneficiados-perjudicados-12m .nombre-pais-curva {
        font-size: 14px;
        font-family: 'Encode Sans', sans-serif;
        fill: #333333;
        font-weight: 700
    }

    #beneficiados-perjudicados-12m .ncasostotales {
        font-size: 11px;
        font-family: 'Encode Sans', sans-serif;
        fill: #939393;
    }

    #beneficiados-perjudicados-12m .eje-vertical-beneficiados-perjudicados-12m line {
        stroke: #c5c5c5;
        stroke-dasharray: 3;
        stroke-width: 0.5;
    }

    #beneficiados-perjudicados-12m .eje-vertical-beneficiados-perjudicados-12m text {
        fill: #000000;
        font-size: 12px
    }

    #beneficiados-perjudicados-12m .eje-vertical-beneficiados-perjudicados-12m path {
        stroke-width: 0;
    }

    #beneficiados-perjudicados-12m .eje-horizontal path {
        stroke-width: 0;
    }

    #beneficiados-perjudicados-12m .eje-horizontal text {
        fill: #939393;
    }

    #beneficiados-perjudicados-12m .eje-horizontal line {
        stroke: #939393;
        stroke-width: 1;
    }

    .columna-datos-eldiarioes {
        text-align: right;
        padding-bottom: 0px;
        padding-top: 0px;
        border-bottom: 1px solid #ddd;
    }

    .primeracolumna-eldiarioes {
        border-bottom: 1px solid #ddd;
        padding-bottom: 0px;
        padding-top: 0px;
    }

    #beneficiados-perjudicados-12m .label-media {
        font-size: 11px !important
    }
</style>
<script>
    (function () {
        var eslocale = d3.timeFormatLocale({
            "dateTime": "%A, %e de %B de %Y, %X",
            "date": "%d/%m/%Y",
            "time": "%H:%M:%S",
            "periods": ["AM", "PM"],
            "days": ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"],
            "shortDays": ["dom", "lun", "mar", "mié", "jue", "vie", "sáb"],
            "months": ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto",
                "septiembre",
                "octubre",
                "noviembre", "diciembre"
            ],
            "shortMonths": ["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov",
                "dic"
            ]
        })
        // set the dimensions and margins of the graph
        var totalWidth = document.getElementById("contenedor-curva-beneficiados-perjudicados-12m")
            .offsetWidth;
        var margin = {
                top: 50,
                right: 20,
                bottom: 20,
                left: 20
            },
            width = totalWidth - margin.left - margin.right
        var parseTime = d3.timeParse("%Y-%m");
        d3.queue()
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2405/autonomicasC09.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2405/autonomicasC09_partidos.json")
            .await(function (err, resultselectionvotes, partieslistvotes) {
                var data2024votes = [];
                Object.keys(resultselectionvotes[9999].v).forEach((b) => {
                    var resultData = {};
                    resultData['eleccion'] = "2024-05";
                    resultData['mes'] = "05";
                    resultData['anio'] = "2024";
                    resultData['sigla'] = partieslistvotes[b].sigla;
                    resultData['color'] = partieslistvotes[b].color;
                    resultData['votos'] = resultselectionvotes[9999]["v"][b].v
                    resultData['porcentaje'] = resultselectionvotes[9999]["v"][b].p / 100
                    resultData['seats'] = resultselectionvotes[9999]["v"][b].s
                    resultData['porcentajedip'] = resultselectionvotes[9999]["v"][b].s / 135 * 100
                    resultData['difvotdip'] = (resultselectionvotes[9999]["v"][b].s / 135 * 100) - (
                        resultselectionvotes[9999]["v"][b].p / 100)
                    data2024votes.push(resultData);
                });
                data2024votes = data2024votes.filter(function (d) {
                    return d.porcentaje > 0.25 | d.seats > 0
                }).sort(function (a, b) {
                    return d3.descending(+a.difvotdip, +b.difvotdip);
                });


                heightbeneficiados12m = (data2024votes.length > 0 ? data2024votes.length * 60 : 450) - margin
                    .top - margin.bottom;

                var locale = d3.formatLocale({
                    decimal: ",",
                    thousands: ".",
                    grouping: [3]
                });

                var mindifvotdip = data2024votes.length > 0 ? d3.min(data2024votes, function (d) {
                    return d.difvotdip
                }) : -5

                var maxdifvotdip = data2024votes.length > 0 ? d3.max(data2024votes, function (d) {
                    return d.difvotdip
                }) : 5
                // Add X axis --> it is a date format
                var x = d3.scaleLinear()
                    .domain([mindifvotdip, maxdifvotdip])
                    .range([0, width]);
                //Add Y axis
                var ybeneficiados12m = d3.scaleBand()
                    .domain(data2024votes.map(function (d) {
                        return d.sigla;
                    })).range([0, heightbeneficiados12m])
                    .padding(0);
                var svg = d3.select("#beneficiados-perjudicados-12m")
                    .append("svg")
                    .attr("width", width + margin.left + margin.right)
                    .attr("height", heightbeneficiados12m + margin.top + margin.bottom)
                    .append("g")
                    .attr("class", "grafico-individual-beneficiados-perjudicados-12m")
                    .attr("transform",
                        "translate(" + margin.left + "," + margin.top + ")");
                svg.append("g")
                    .attr("class", "eje-vertical-beneficiados-perjudicados-12m")
                    .call(d3.axisLeft(ybeneficiados12m).ticks(0)
                        .tickSize(-width)
                        .tickSizeOuter(0)
                        .tickFormat(function (d) {
                            return ""
                        }));
                // Draw the line
                svg
                    .append("g")
                    .attr("class", "eje-horizontal")
                    .attr("transform", "translate(0," + -25 + ")")
                    .call(d3.axisTop(x)
                        .ticks(totalWidth > 600 ? 8 : 4).tickSizeOuter(0)
                        .tickFormat(function (d) {
                            return locale.format("+,d")(d) + "p";
                        }));
                svg.append("g")
                    .attr("class", "grupo-linea-porcentaje-voto-favorecidos").selectAll(
                        ".beneficiados-perjudicados-12m")
                    .data(data2024votes)
                    .enter()
                    .append("rect")
                    .attr("class", "beneficiados-perjudicados-12m")
                    .attr("fill", function (d) {
                        return d.color;
                    })
                    .attr("x", function (d) {
                        return d.difvotdip > 0 ? x(0) : x(d.difvotdip);
                    })
                    .attr("width", function (d) {
                        return d.difvotdip > 0 ? x(d.difvotdip) - x(0) : x(0) - x(d.difvotdip);
                    })
                    .attr("y", function (d) {
                        return ybeneficiados12m(d.sigla);
                    })
                    .attr("height", ybeneficiados12m.bandwidth())
                    .style("cursor", "pointer")
                    .on("mouseover", mouseover)
                    .on("mousemove", mousemove)
                    .on("mouseout", mouseout);
                svg.append("g")
                    .append("line")
                    .attr("class", "lineas-beneficiados-perjudicados-12m")
                    .attr("x1", function (d) {
                        return x(0);
                    })
                    .attr("y1", 0)
                    .attr("x2", function (d) {
                        return x(0);
                    })
                    .attr("y2", heightbeneficiados12m)
                    .attr("stroke-width", 1)
                    .attr("stroke", "#000000");
                svg.append("g")
                    .attr("class", "grupo-circulo-diferencia-porcentaje").selectAll("line-circle")
                    .data(data2024votes)
                    .enter().append("text")
                    .attr("class", "circulo-diferencia-porcentaje")
                    .text(function (d) {
                        return (d.sigla);
                    })
                    .attr("display", "block")
                    .attr("fill", function (d) {
                        return d.color;
                    })
                    .attr("x", function (d) {
                        return d.difvotdip > 0 ? x(0) - 5 : x(0) + 5;
                    })
                    .attr("y", function (d) {
                        return ybeneficiados12m(d.sigla) + ybeneficiados12m.bandwidth() / 2;
                    })
                    .attr('alignment-baseline', 'middle')
                    .attr("text-anchor", function (d) {
                        return d.difvotdip > 0 ? "end" : "start";
                    })
                    .style("font-weight", 500)
                    .style("stroke", "#ffffff")
                    .style("stroke-width", "3px")
                    .style("pointer-events", "none")
                    .style("paint-order", "stroke");


                svg.append("g")
                    .attr("class", "grupo-circulo-diferencia-porcentaje").selectAll("line-circle")
                    .data(data2024votes)
                    .enter().append("text")
                    .attr("class", "circulo-diferencia-porcentaje")
                    .text(function (d) {
                        return locale.format("+.1f")(d.difvotdip) + "p";
                    })
                    .attr("display", "block")
                    .attr("x", function (d) {
                        return d.difvotdip > 0 ? x(0) + 5 : x(0) - 5;
                    })
                    .attr("y", function (d) {
                        return ybeneficiados12m(d.sigla) + ybeneficiados12m.bandwidth() / 2;
                    })
                    .attr('alignment-baseline', 'middle')
                    .attr("text-anchor", function (d) {
                        return d.difvotdip > 0 ? "start" : "end";
                    })
                    .style("font-weight", 500)
                    .style("stroke", "#ffffff")
                    .style("stroke-width", "3px")
                    .style("pointer-events", "none")
                    .style("paint-order", "stroke");

                svg.append("line")
                    .attr('class', 'lineanot')
                    .attr('display', 'none')
                    .attr("x1", x(24))
                    .attr("y1", heightbeneficiados12m)
                    .attr("x2", x(24))
                    .attr("y2", -10)
                    .attr("stroke-width", 1)
                    .attr("stroke", "black")
                svg
                    .append('text')
                    .attr("class", "label-beneficiados-12m")
                    .html("Beneficiados →")
                    .attr('alignment-baseline', 'middle')
                    .attr('text-anchor', 'start')
                    .attr('x', x(0.5))
                    .attr('y', -10)
                    .attr("fill", "#000000")
                    .style("font-weight", 700)
                svg
                    .append('text')
                    .attr("class", "label-perjudicados-12m")
                    .html("← Perjudicados")
                    .attr('alignment-baseline', 'middle')
                    .attr('text-anchor', 'end')
                    .attr('x', x(-0.5))
                    .attr('y', -10)
                    .attr("fill", "#000000")
                    .style("font-weight", 700)
                var tooltipWidth = totalWidth > 600 ? '220px' : '220px';
                var tooltipPosition = totalWidth > 600 ? 'absolute' : 'absolute';
                var tooltip = d3.select("body")
                    .append("div")
                    .attr("id", "tooltip-info")
                    .style("position", tooltipPosition)
                    .style("z-index", "10")
                    .style("visibility", "hidden")
                    .style("color", "black")
                    .style("padding", "8px")
                    .style("background-color", "white")
                    .style("border-radius", "0px")
                    .style("pointer-events", "none")
                    .style("font-size", "12px")
                    .style("font-family", "'Encode Sans', sans-serif")
                    .style("box-shadow", "0 2px 2px 0 #ccc")
                    .style("border", "1px solid #ccc")
                    .style("margin-left", "2px")
                    .style("line-height", "1.5");

                function mouseover(d) {
                    d3.select(this.parentNode.appendChild(this))
                        .style('stroke', 'black')
                        .style('stroke-width', '2px')
                    var fecha = (d.anio);
                    var sigla = d.sigla;
                    var votos = locale.format(",d")(d.votos);
                    var porcentaje = locale.format(".1f")(d.porcentaje);
                    var seats = locale.format(",d")(d.seats);
                    var porcentajedip = locale.format(".1f")(d.porcentajedip);
                    var difvotdip = locale.format("+.1f")(d.difvotdip);
                    var votos = locale.format(",d")(d.votos);
                    tooltip.transition()
                        .duration(0)
                        .style("opacity", 1);
                    tooltip.html(
                        '<p style="display: block; text-align:left;margin-top:0px;margin-bottom:5px;font-size:16px;font-weight:bold;border-bottom:1px solid #c5c5c5;;color:' +
                        d.color + '">' +
                        sigla +
                        '</p><p style="display: block;text-align:left;margin-top:0px;margin-bottom:2px;font-size:12px;color:#6d6d6d">Elecc. de ' +
                        fecha +
                        '<table style="border-collapse: collapse;height:90px;width:100%;margin-bottom:5px"><tr><th style="text-align:left"></th><th style="text-align:right">Nº</th><th style="text-align:right">%</th></tr><tr class="fila-tabla"><td class="primeracolumna-eldiarioes">Votos</td><td class="columna-datos-eldiarioes" style="color:#000000;">' +
                        votos +
                        '</td><td class="columna-datos-eldiarioes" style="color:#000000;font-weight:700">' +
                        porcentaje +
                        '%</td></tr><tr class="fila-tabla"><td class="primeracolumna-eldiarioes">Escaños</td><td class="columna-datos-eldiarioes" style="color:#000000;">' +
                        seats +
                        '</td><td class="columna-datos-eldiarioes" style="color:#000000;font-weight:700">' +
                        porcentajedip +
                        '%</td></tr><tr class="fila-tabla"><td class="primeracolumna-eldiarioes">Diferencia</td><td class="columna-datos-eldiarioes" style="color:#000000;"></td><td class="columna-datos-eldiarioes" style="color:#000000;font-weight:700">' +
                        difvotdip +
                        'p</td></tr></table>'
                    );
                    tooltip.style("visibility", "visible");
                    tooltip.style('width', tooltipWidth);
                }

                function mouseout(d) {
                    d3.select(this)
                        .style('stroke-width', '0px')
                        .style("stroke", "#ffffff")
                    tooltip.transition()
                        .duration(20)
                        .style("opacity", 0);
                    var $tooltip = $("#tooltip");
                    $tooltip.empty();
                }

                function mousemove(d) {
                    if (totalWidth > 600) {
                        if (d3.event.pageX > width / 1.5) {
                            return tooltip.style("top", (d3.event.pageY - 180) + "px").style("left", (d3.event
                                    .pageX - 150) +
                                "px");
                        }
                        return tooltip.style("top", (d3.event.pageY - 180) + "px").style("left", (d3.event
                                .pageX - 20) +
                            "px");
                    } else {
                        return tooltip.style("top", (d3.event.pageY - 180) + "px").style("left", "20%");
                    }
                }
            })
    })();
</script>
    </figure><p class="article-text">
        <strong>&iquest;C&oacute;mo afecta la divisi&oacute;n del voto en nueve candidaturas al resultado de los partidos en las elecciones catalanas? </strong>Para algunos partidos es m&aacute;s dif&iacute;cil llegar a un porcentaje suficientemente elevado del voto como pare entrar en el reparto de esca&ntilde;os, especialmente en las provincias que escogen menos diputados. Por eso, hay parte de los votos en algunas circunscripciones que no se traducen en diputados. 
    </p><p class="article-text">
        Este gr&aacute;fico de barras muestra la comparaci&oacute;n del porcentaje de voto obtenido por las principales fuerzas en Catalu&ntilde;a que se quedaron sin representaci&oacute;n para las elecciones de 2017, 2021 y 2024. Haz clic para ver m&aacute;s detalle.&nbsp;
    </p><figure class="embed-container embed-container--type-embed ">
    
            <link href="https://fonts.googleapis.com/css?family=Encode+Sans:400,500,700|Roboto:400,500,700&display=swap"
    rel="stylesheet">


<script src="https://d3js.org/d3.v4.js"></script>
<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src='https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/charts_12m_min.js'>
</script>
<link rel="stylesheet" href="https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/charts_12m.css">


<br><!-- título -->
<h4 class="chart_title_12m">Los votos sin escaño en cada provincia de Catalunya el 12M
</h4>
<p class="chart_subtitle_12m">
    Porcentaje de voto obtenido sin representación por cada partido con más del 0,5% de los votos en las elecciones catalanas
    de 2017, 2021 y 2024. Haz
    click para ver más detalle
</p>

<div style="width: 100%; margin: 0 auto; text-align: center; margin-bottom: 10px;font-family:'Encode Sans',sans-serif;">
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #AAD656; padding-left: 4px;margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">Vox</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #FFED00; padding-left: 4px;margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">CUP</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #A54290; padding-left: 4px;margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">Comuns</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #EA8046; padding-left: 4px; margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">Cs</span>
    </div>
    <div class="partido-leyenda"
        style="display: inline-block; border-left: 4px solid #02a2dd; padding-left: 4px; margin-right:20px; margin-bottom: 12px; text-align:left;">
        <span style="display: block;">PP</span>
    </div>
    <div class="partido-leyenda" style="display: inline-block; padding: 4px;margin-right:20px;color:black;font-weight:700; margin-bottom: 12px; text-align:left;background: repeating-linear-gradient(
            45deg,
            #c5c5c5,
            #c5c5c5 2px,
            #ffffff 2px,
            #ffffff 4px
          );">
        <span style="display: block;">Sin escaño</span>
    </div>
</div>

<div id="contenedor-division-bloques">
    <div id="division-partidos-bloque-conversion-escanos"></div>
</div>
<p style="font-size:12px;text-align:left;font-family:'Encode Sans',sans-serif;line-height:20px;color:#181818;">Fuente:
    Generalitat de Catalunya</p>

<br>

<script>
    (function () {
        var eslocale = d3.timeFormatLocale({
            "dateTime": "%A, %e de %B de %Y, %X",
            "date": "%d/%m/%Y",
            "time": "%H:%M:%S",
            "periods": ["AM", "PM"],
            "days": ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"],
            "shortDays": ["dom", "lun", "mar", "mié", "jue", "vie", "sáb"],
            "months": ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto",
                "septiembre",
                "octubre",
                "noviembre", "diciembre"
            ],
            "shortMonths": ["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov",
                "dic"
            ]
        })


        var parseTime = d3.timeParse("%d/%m/%Y");

        d3.queue()
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2405/autonomicasC09.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2405/autonomicasC09_partidos.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2102/autonomicasC09.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/2102/autonomicasC09_partidos.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/1712/autonomicasC09.json")
            .defer(d3.json, "https://elecciones-api.eldiario.es/data/1712/autonomicasC09_partidos.json")
            .await(function (err, resultselection, partieslist, resultselection_prev, partieslist_prev,
                resultselection_prev_prev, partieslist_prev_prev) {
                var dsv = d3.dsvFormat(';')



                var seatselection_prev_prev = [];
                var seatselection_prev = [];
                var seatselection = [];

                Object.keys(resultselection).forEach((a) => {
                    Object.keys(resultselection[a]["v"]).forEach((b) => {

                        var resultData = {};
                        resultData['elecciones'] = '2024';
                        resultData['circunscripcion'] = a;
                        resultData['party'] = partieslist[b].sigla;
                        resultData['colorparty'] = partieslist[b].color;
                        resultData['blockparty'] = partieslist[b].block;
                        resultData['seats'] = resultselection[a]["v"][b].s
                        resultData['percentage'] = resultselection[a]["v"][b].p / 100

                        seatselection.push(resultData);
                    });
                })


                seatselection = seatselection.filter(function (d) {
                    return d.circunscripcion != 9999 & d.circunscripcion != 99359 & d
                        .circunscripcion !=
                        99389
                })



                Object.keys(resultselection_prev).forEach((a) => {
                    Object.keys(resultselection_prev[a]["v"]).forEach((b) => {

                        var resultData = {};
                        resultData['elecciones'] = "2021";
                        resultData['circunscripcion'] = a;
                        resultData['party'] = partieslist_prev[b].sigla;
                        resultData['colorparty'] = partieslist_prev[b].color;
                        resultData['seats'] = resultselection_prev[a]["v"][b].s
                        resultData['blockparty'] = partieslist_prev[b].block;
                        resultData['percentage'] = resultselection_prev[a]["v"][b].p / 100


                        seatselection_prev.push(resultData);

                    });
                })



                seatselection_prev = seatselection_prev.filter(function (d) {
                    return d.circunscripcion != 9999 & d.circunscripcion != 99359 & d
                        .circunscripcion !=
                        99389
                })



                Object.keys(resultselection_prev_prev).forEach((a) => {
                    Object.keys(resultselection_prev_prev[a]["v"]).forEach((b) => {

                        var resultData = {};
                        resultData['elecciones'] = "2017";
                        resultData['circunscripcion'] = a;
                        resultData['party'] = partieslist_prev_prev[b].sigla;
                        resultData['colorparty'] = partieslist_prev_prev[b].color;
                        resultData['seats'] = resultselection_prev_prev[a]["v"][b].s
                        resultData['blockparty'] = partieslist_prev_prev[b].block;
                        resultData['percentage'] = resultselection_prev_prev[a]["v"][b].p / 100


                        seatselection_prev_prev.push(resultData);

                    });
                })



                seatselection_prev_prev = seatselection_prev_prev.filter(function (d) {
                    return d.circunscripcion != 9999 & d.circunscripcion != 99359 & d
                        .circunscripcion !=
                        99389
                })


                var datosTotales = seatselection_prev_prev.concat(seatselection_prev).concat(seatselection)
                    .filter(function (d) {
                        return d.seats == 0 & d.percentage > 0.5
                    }).sort(function (a, b) {
                        return d3.ascending(a.elecciones, b.elecciones) || d3.descending(a.percentage, b
                            .percentage);
                    })



                createDivisionVotesChart(datosTotales)



            })
    })();
</script>
    </figure><figure class="embed-container embed-container--type-embed ">
    
            <style>
    .container-divs-recirculacion {
        display: flex;
        flex-direction: row;
        max-width: 640px;
        justify-content: left;
        margin: 0 auto;
        flex-wrap: wrap
    }

    .container-url-recirculacion {
        background-color: #F2F0F0;
        margin: 10px;
        flex-basis: 30%;
    }

    .img-link-eldiarioes {
        width: 100%;
    }


    .texto-epigrafe-recirculacion {
        font-size: 12px;
        font-family: 'Encode Sans', sans-serif;
        font-weight: 500;
        color: #4a4a4a;
        line-height: 19px;
        letter-spacing: 0px;
        padding: 7px 10px;
        text-decoration: none !important;
        text-align: left;
        text-transform: uppercase;
        /* no underline */
    }

    .texto-titulo-recirculacion {
        font-size: 15px;
        font-family: 'Encode Sans', sans-serif;
        font-weight: 500;
        color: #000000;
        line-height: 19px;
        letter-spacing: 0px;
        padding: 0px 10px;
        height: 70px;
        text-decoration: none !important;
        text-align: left;
        /* no underline */
    }


    .titulo-divs-recirculacion {
        max-width: 620px;
        margin: 0 auto;
        padding: 10px 0px;
        font-family: 'Encode Sans', sans-serif;
        font-weight: 600;
        text-transform: uppercase;
        color: #4A4A4A;
        border-top: 1px solid #E9E9E9;
        margin-top: 40px;
        text-align: left;
        font-size: 14px;
        margin-bottom: 10px;
    }

    @media only screen and (max-width: 600px) {
        .container-divs-recirculacion {
            flex-direction: column;
            margin: 0px 0px
        }

        .div-link-eldiarioes {
            display: flex
        }

        .img-link-eldiarioes {
            width: 144px;

        }

        .texto-titulo-recirculacion {
            height: 48px;
        }

        .container-url-recirculacion {
            margin: 10px 0px
        }

        .titulo-divs-recirculacion {
            padding: 10px 0px;
        }

    }
</style>

<h4 class="titulo-divs-recirculacion">Los resultados en detalle</h4>

<div class="container-divs-recirculacion">


    <div class="container-url-recirculacion">
        <a class="div-link-eldiarioes" style="text-decoration:none"
            href="https://www.eldiario.es/catalunya/resultados-elecciones-catalunya-municipios-2024_1_11350922.html">
            <img src="https://static.eldiario.es/clip/3d02d8ba-a136-41c1-b664-6e6c69eb534c_16-9-discover-aspect-ratio_default_0.jpg"
                class="img-link-eldiarioes">
            <div>
                <div class="texto-epigrafe-recirculacion">Por partidos</div>
                <div class="texto-titulo-recirculacion">Los resultados del 12M por municipios</div>
            </div>
        </a>
    </div>



    <div class="container-url-recirculacion">
        <a class="div-link-eldiarioes" style="text-decoration:none"
            href="https://www.eldiario.es/catalunya/voto-independentista-catalunya-12m-2024_1_11351010.html">
            <img src="https://static.eldiario.es/clip/7c36d1bc-e97d-4f03-a8e7-6df5adb47cd5_16-9-discover-aspect-ratio_default_0.jpg"
                class="img-link-eldiarioes">
            <div>
                <div class="texto-epigrafe-recirculacion">Indep. VS No indep.</div>
                <div class="texto-titulo-recirculacion">El mapa del voto independentista</div>
            </div>
        </a>
    </div>


    <div class="container-url-recirculacion">
        <a class="div-link-eldiarioes" style="text-decoration:none"
            href="https://www.eldiario.es/catalunya/resultados-elecciones-catalunya-perfil-demografico-2024_1_11351160.html">
            <img src="https://static.eldiario.es/clip/f74b05cb-1f71-49cd-b00b-4b5334a331d1_16-9-discover-aspect-ratio_default_0.jpg"
                class="img-link-eldiarioes">
            <div>
                <div class="texto-epigrafe-recirculacion">Perfil del voto</div>
                <div class="texto-titulo-recirculacion">Demografía del 12M: así vota cada grupo
                </div>
            </div>
        </a>
    </div>

    <div class="container-url-recirculacion">
        <a class="div-link-eldiarioes" style="text-decoration:none"
            href="https://www.eldiario.es/catalunya/batalla-ultimo-escano-12m-catalunya-directo_1_11351517.html">
            <img src="https://static.eldiario.es/clip/67d5019e-cde6-4646-9264-40c326fa75a8_16-9-discover-aspect-ratio_default_0.jpg"
                class="img-link-eldiarioes">
            <div>
                <div class="texto-epigrafe-recirculacion">En directo</div>
                <div class="texto-titulo-recirculacion">La batalla del último escaño en Catalunya
                </div>
            </div>
        </a>
    </div>

    <div class="container-url-recirculacion">
        <a class="div-link-eldiarioes" style="text-decoration:none"
            href="https://www.eldiario.es/catalunya/elecciones-catalunya-12m-2024-calculadora-pactos-mayoria-absoluta-parlament-resultados_1_11358984.html">
            <img src="https://static.eldiario.es/clip/407b554d-1c6d-4478-bcd1-a0c9b682849e_16-9-discover-aspect-ratio_default_0.jpg"
                class="img-link-eldiarioes">
            <div>
                <div class="texto-epigrafe-recirculacion">Los pactos</div>
                <div class="texto-titulo-recirculacion">Calculadora de mayorías para el Parlament
                </div>
            </div>
        </a>
    </div>



    <div class="container-url-recirculacion">
        <a class="div-link-eldiarioes" style="text-decoration:none"
            href="https://www.eldiario.es/catalunya/mapa-resultados-elecciones-catalunya-12m-calle-calle_1_11351385.html">
            <img src="https://static.eldiario.es/clip/bdc0ebbb-9b4b-4e52-9fd2-b44badd75321_16-9-discover-aspect-ratio_default_0.jpg"
                class="img-link-eldiarioes">
            <div>
                <div class="texto-epigrafe-recirculacion">Calle a calle</div>
                <div class="texto-titulo-recirculacion">El mapa más detallado del voto el 12M
                </div>
            </div>
        </a>
    </div>



</div>
    </figure>]]></description>
      <dc:creator><![CDATA[Raúl Sánchez / Victòria Oliveres / Yuly Jara]]></dc:creator>
      <guid isPermaLink="true"><![CDATA[https://www.eldiarioar.com/mundo/resultados-elecciones-catalunya-municipios-2024_1_11361207.html]]></guid>
      <pubDate><![CDATA[Sun, 12 May 2024 21:14:17 +0000]]></pubDate>
      <enclosure url="https://static.eldiario.es/clip/3d02d8ba-a136-41c1-b664-6e6c69eb534c_16-9-discover-aspect-ratio_default_0.jpg" length="142828" type="image/jpeg"/>
      <media:content url="https://static.eldiario.es/clip/3d02d8ba-a136-41c1-b664-6e6c69eb534c_16-9-discover-aspect-ratio_default_0.jpg" type="image/jpeg" fileSize="142828" width="1200" height="675"/>
      <media:title><![CDATA[Los resultados de las elecciones en Cataluña, municipio a municipio]]></media:title>
      <media:thumbnail url="https://static.eldiario.es/clip/3d02d8ba-a136-41c1-b664-6e6c69eb534c_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675"/>
      <media:keywords><![CDATA[Elecciones en España,Cataluña]]></media:keywords>
    </item>
    <item>
      <title><![CDATA[El PSC ganó las elecciones catalanas con 42 escaños y el independentismo perdió la mayoría absoluta]]></title>
      <link><![CDATA[https://www.eldiarioar.com/mundo/psc-gano-elecciones-catalanas-42-escanos-independentismo-mayoria-absoluta_1_11361173.html]]></link>
      <description><![CDATA[<p><img src="https://static.eldiario.es/clip/8e279718-1fa5-4399-a422-cc2a0799743f_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675" alt="El PSC gana y el independentismo pierde la mayoría absoluta, con el 40% escrutado"></p><div class="subtitles"><p class="subtitle">Salvador Illa logró siete diputados más que Carles Puigdemont, la suma de Junts, ERC y la CUP obtuvo su peor resultado desde el inicio del procés. </p><p class="subtitle"> Los resultados de las elecciones en Cataluña, municipio a municipio</p></div><figure class="embed-container embed-container--type-embed ">
    
            <div class="arco-catalunya-12m">
  <iframe style="border: 0px;" src="https://elecciones.eldiario.es/widget/autonomicas/arco/catalunya/12-mayo-2024/" width="100%" scrolling="no"></iframe>
 </div>
 
 <style>
  .arco-catalunya-12m iframe { height: 660px;}
  @media only screen and (min-width: 360px){ .arco-catalunya-12m iframe { height: 650px;} }
  @media only screen and (min-width: 400px){ .arco-catalunya-12m iframe { height: 620px;} }
  @media only screen and (min-width: 450px){ .arco-catalunya-12m iframe { height: 620px;} }
  @media only screen and (min-width: 500px){ .arco-catalunya-12m iframe { height: 600px;} }
  @media only screen and (min-width: 600px){ .arco-catalunya-12m iframe { height: 580px;} }
  @media only screen and (min-width: 768px){ .arco-catalunya-12m iframe { height: 560px;} }
 </style>
    </figure><p class="article-text">
        <strong>El PSC gan&oacute; las elecciones en Catalu&ntilde;a y el independentismo perdi&oacute; la mayor&iacute;a absoluta que ostent&oacute; en la &uacute;ltima d&eacute;cada.</strong> Con un 95% de los votos contabilizados, el PSC de Salvador Illa pudo imponerse con el 28% de los votos y 42 esca&ntilde;os (ocho m&aacute;s que los que tiene ahora), sobre Carles Puigdemont, que logr&oacute; el 21% de los sufragios y 36 diputados (cuatro m&aacute;s que los que ten&iacute;a Junts).<strong> Es el peor resultado del independentismo en unas elecciones al Parlament desde el inicio del proc&eacute;s, mientras que los socialistas logran sus mejores n&uacute;meros en casi dos d&eacute;cadas.</strong>
    </p><p class="article-text">
        Adem&aacute;s del ganador, para el resultado final era clave ver qu&eacute; bloque pod&iacute;a alcanzar la suma de 68 diputados, <a href="https://www.eldiario.es/catalunya/elecciones-catalunya-12m-2024-calculadora-pactos-mayoria-absoluta-parlament-resultados_1_11358984.html" target="_blank" data-mrf-recirculation="links-noticia" class="link">claves para una investidura</a>: la suma de las izquierdas, la uni&oacute;n de los independentistas (y si necesitaban a la extrema derecha de Alian&ccedil;a Catalana) o una opci&oacute;n m&aacute;s remota, una &lsquo;sociovergencia&rsquo; de PSC y Junts. La suma de izquierdas entre PSC, ERC y Comuns s&iacute; logra, por la m&iacute;nima, los 68 esca&ntilde;os, mientras socialistas y neonvergentes suman 77 representantes.
    </p><p class="article-text">
        La derrota de la noche es la del independentismo: Junts, ERC y la CUP se ubicaron lejos de la absoluta y se quedaron en 60 esca&ntilde;os (hasta ahora ten&iacute;an 74). La crisis independentista se explica por el retroceso de las dos fuerzas independentistas de izquierdas, ya que Junts suma cuatro diputados m&aacute;s. En cambio, ERC sufre una debacle y pasa de 33 a 20 diputados, mientras que la CUP pierda m&aacute;s de la mitad de sus parlamentarios y baja de 9 a cuatro esca&ntilde;os. 
    </p><figure class="embed-container embed-container--type-embed ">
    
            <script src="https://d3js.org/d3.v4.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto:400,500,700" rel="stylesheet">

<style>
    #container-update-bottom-seats button {
        cursor: pointer;
        outline: none
    }

    #container-update-bottom-seats button:focus {
        cursor: pointer;
        outline: none
    }

    #container-update-bottom-seats .button-new-seats-tabla {
        font-size: 14px;
        background-color: #fff;
        border: 2px solid #ccc;
        padding: 5px;
        cursor: pointer;
        border-radius: 4px;
        margin: 10px 0px;
        font-family: 'Encode Sans', sans-serif;
        color: black
    }

    #container-update-bottom-seats .spinning-icon-ipc {
        width: 22px;
        vertical-align: middle;
        margin-right: 8px;
        transition: transform .7s ease-in-out;
    }


    .div-provincia-ultimo-escanio {
        display: flex;
        flex-direction: row;
        gap: 0px 30px;
        flex-wrap: wrap;
        margin-top: 30px;
    }



    .lastseatcircunscripcion {
        border-top: 1px solid #4A4A4A;
        font-family: 'Encode Sans', sans-serif;
        position: relative;
        flex-basis: 100%;
        text-align: left;
    }

    .lastseatcircunscripcion:before {
        content: "";
        content: "";
        position: absolute;
        right: -14px;
        border: 1px solid #E9E9E9;
        height: 220px
    }



    .lastseatcircunscripcion .nombre-provincia-ultimo-escanio {
        font-family: 'Encode Sans', sans-serif;
        font-size: 16px;
        font-weight: 700;
        margin: 5px 0px 30px 0px
    }

    .lastseatcircunscripcion .escrutado-porcentaje-ultimo-escanio {
        font-size: 11px;
        font-weight: 400;
        margin-right: 5px;
        position: absolute;
        top: 10px;
        right: 0px;
        color: #979797
    }

    .lastseatcircunscripcion .nombre-partido-pierde-gana-seat {
        font-size: 14px;
        margin-bottom: 30px
    }

    .lastseatcircunscripcion .censo-por-escrutar {
        font-size: 14px;
    }

    .lastseatcircunscripcion .censo-por-escrutar p {
        margin-bottom: 0px;
        margin-top: 10px;
    }

    .lastseatcircunscripcion .censo-por-escrutar p:last-child {
        margin-bottom: 30px;
    }


    @media (min-width: 600px) {

        .lastseatcircunscripcion {
            flex-basis: 47%;
        }

    }

    @media (min-width: 900px) {

        .lastseatcircunscripcion {
            flex-basis: 22%;
        }

    }


    .color-partido-cuadrado {
        animation: shake 1s infinite;
    }


    @keyframes shake {
        0% {
            transform: rotate(15deg);
        }

        50% {
            transform: rotate(-15deg);
        }

        100% {
            transform: rotate(15deg);
        }
    }
</style>
<!--<![endif]-->


<br><!-- título -->

<h4 style="font-family:'Encode Sans',sans-serif;text-align:left;color:black;font-size:22px;font-weight:700">La batalla
    por el último escaño el 12M: quiénes están a punto de perder y ganar un escaño</h4>
<p style="font-size:14px;text-align:left;font-family:'Encode Sans',sans-serif;line-height:20px;color:#181818">Número de
    votos que necesita un partido para robar un escaño a la última candidatura que lo consiguió en las elecciones de
    Catalunya
</p>


<div style="text-align:center">

    <div id="container-update-bottom-seats">
        <button id="button-new-seats-tabla" class="button-new-seats-tabla"><img class="spinning-icon-ipc"
                src="https://new-lab.eldiario.es/projects/random-charts-ipc/static/media/refresh.2538a47a.svg"
                alt="refresh">
            Actualiza los datos</button>
    </div>

</div>



<div id="container-tabla-ultimo-escanio" class="div-provincia-ultimo-escanio"></div>

<script>
    (function () {


        var eslocale = d3.timeFormatLocale({
            "dateTime": "%A, %e de %B de %Y, %X",
            "date": "%d/%m/%Y",
            "time": "%H:%M:%S",
            "periods": ["AM", "PM"],
            "days": ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"],
            "shortDays": ["dom", "lun", "mar", "mié", "jue", "vie", "sáb"],
            "months": ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto",
                "septiembre",
                "octubre",
                "noviembre", "diciembre"
            ],
            "shortMonths": ["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov",
                "dic"
            ]
        })

        var locale = d3.formatLocale({
            decimal: ",",
            thousands: ".",
            grouping: [3]
        });


        var parseTime = d3.timeParse("%Y-%m");




        var totalWidth = document.getElementById("container-tabla-ultimo-escanio").offsetWidth;

        d3.text('https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/mapa_escanios_disputa.csv',
            function (dataoriginal) {
                var dsv = d3.dsvFormat(';')

                var dataoriginal = dsv.parse(dataoriginal)


                var escrutado = +dataoriginal[0].escrutado

                function animateValue(obj, start, end, duration) {
                    let startTimestamp = null;
                    const step = (timestamp) => {
                        if (!startTimestamp) startTimestamp = timestamp;
                        const progress = Math.min((timestamp - startTimestamp) / duration, 1);
                        obj.innerHTML = Math.floor(progress * (end - start) + start);
                        if (progress < 1) {
                            window.requestAnimationFrame(step);
                        }
                    };
                    window.requestAnimationFrame(step);
                }




                function createTablaDisputa() {


                    dataoriginal.sort(function (x, y) {
                        return d3.ascending(x.codprov, y.codprov);
                    })


                    var lastseatchart = d3.select('.div-provincia-ultimo-escanio');


                    var lastseatcircunscripcion = lastseatchart
                        .selectAll('.circunscripcion')
                        .data(dataoriginal)
                        .enter()
                        .append('div')
                        .attr('class', 'lastseatcircunscripcion')


                    lastseatcircunscripcion
                        .append('div')
                        .attr('class', 'nombre-provincia-ultimo-escanio')
                        .html(function (d) {
                            return d.provincia
                        });

                    lastseatcircunscripcion
                        .append('div')
                        .attr("class", "escrutado-porcentaje-ultimo-escanio")
                        .html(function (d) {
                            return "Escr. <span style='font-weight:600'>" +
                                locale
                                .format(".1f")(d.escrutado / 100) + "%</span>"
                        });

                    lastseatcircunscripcion
                        .append('div')
                        .attr("class", "nombre-partido-pierde-gana-seat")
                        .html(function (d) {
                            return "<span class='color-partido-cuadrado' style='background-color:" + d
                                .color_fuera +
                                ";display: inline-block;width: 15px; height: 15px; margin-right: 4px;margin-bottom:-2px'></span><b style='color:" +
                                d
                                .color_fuera + "'>" + d.sigla_fuera +
                                "</b> está a <b id='votos-restantes' style='font-size:18px'></b> votos <br>de arrebatar un escaño a <span class='color-partido-cuadrado' style='background-color:" +
                                d.color_ultimo +
                                ";display: inline-block;width: 15px; height: 15px; margin-right: 4px;margin-bottom:-2px'></span><b style='color:" +
                                d.color_ultimo +
                                "'>" + d.sigla_ultimo + "</b>";
                        });


                    lastseatcircunscripcion
                        .append('div')
                        .attr("class", "censo-por-escrutar")
                        .html(function (d) {
                            return "<p style='text-transform:uppercase;font-weight:400;color:#686868;font-size:14px'>¿Cuánto queda por contar?</p>" +
                                (d.censo_por_escrutar != 0 ?
                                    "<p>En la provincia quedan por contar los votos de <span style='font-weight:700;'>" +
                                    locale.format(",d")(d.censo_por_escrutar) +
                                    "</span> electores</p>" :
                                    "<p>No quedan votos de residentes por contar en la provincia. Falta por añadir el voto CERA</p>"
                                );
                        });




                    // Animar el número de votos restantes con transición
                    d3.selectAll("#votos-restantes")
                        .transition() // Inicia la transición
                        .duration(3000) // Duración de la transición en milisegundos
                        .tween("text", function () {
                            var node = this;
                            var start = +node.textContent; // Valor inicial
                            var end = +node.parentNode.__data__.votos_dif; // Valor final
                            var i = d3.interpolate(start, end); // Interpolación
                            return function (t) {
                                node.textContent = locale.format(",d")(Math.round(i(
                                    t))); // Actualiza el contenido del nodo durante la transición
                            };
                        });

                }

                createTablaDisputa()


                var anguloprincipal = 0


                function updateTabla(error, datostablaactualizados) {

                    dataoriginal = dsv.parse(datostablaactualizados)

                    d3.select(".div-provincia-ultimo-escanio").selectAll("*").remove()


                    createTablaDisputa()


                }




                d3.select("#button-new-seats-tabla").on("click", function () {

                    d3.queue()
                        .defer(d3.text,
                            "https://lab.eldiario.es/elections-maps/elecciones-catalunya-2024-12m/master/charts/mapa_escanios_disputa.csv"
                        )
                        .await(updateTabla);



                    var angulogiro = 360 + anguloprincipal

                    d3.selectAll(".spinning-icon-ipc")
                        .style("transform", "rotate(" + -angulogiro + "deg)")

                    anguloprincipal = angulogiro
                })




            });


    })();
</script>
    </figure><p class="article-text">
        La extrema derecha de Alian&ccedil;a Catalana &ndash;con quien el resto de independentistas ha dicho no querer pactar&ndash; irrumpe en el Parlament con dos esca&ntilde;os, igualmente insuficientes para alcanzar la mayor&iacute;a. 
    </p><p class="article-text">
        En la batalla por la cuarta posici&oacute;n de la noche, el PP (15 diputados, doce m&aacute;s que los que tiene ahora) logro imponerse a Vox, que obtiene 11 representantes, los mismos que sus actuales. Por debajo de la derecha y la ultraderecha se sit&uacute;a Comuns&ndash;Sumar con seis esca&ntilde;os, dos menos que los que ten&iacute;an hasta ahora.
    </p><p class="article-text">
        Quien prosigue su camino a la desaparici&oacute;n definitiva es Ciudadanos, que se queda sin representaci&oacute;n en el legislativo auton&oacute;mico que le vio nacer y que era el &uacute;nico donde manten&iacute;a hasta ahora seis diputados.
    </p><p class="article-text">
        <strong>Las elecciones de este domingo estuvieron marcadas por una baja participaci&oacute;n</strong>, similar a la de los comicios de 2021, que debido a la COVID-19 registraron la menor afluencia a las urnas desde la recuperaci&oacute;n de la democracia con un 51,29% de votantes. Este domingo, a falta de cerrar la cifra definitiva, la participaci&oacute;n qued&oacute; en un 54,48%. Lejos quedan los datos hist&oacute;ricos de las elecciones de 2017 y 2015, en las que, al calor del proc&eacute;s, por primera vez m&aacute;s del 70% de electores catalanes acudieron a las urnas.
    </p>]]></description>
      <dc:creator><![CDATA[Oriol Solé Altimira]]></dc:creator>
      <guid isPermaLink="true"><![CDATA[https://www.eldiarioar.com/mundo/psc-gano-elecciones-catalanas-42-escanos-independentismo-mayoria-absoluta_1_11361173.html]]></guid>
      <pubDate><![CDATA[Sun, 12 May 2024 21:02:05 +0000]]></pubDate>
      <enclosure url="https://static.eldiario.es/clip/8e279718-1fa5-4399-a422-cc2a0799743f_16-9-discover-aspect-ratio_default_0.jpg" length="37388" type="image/jpeg"/>
      <media:content url="https://static.eldiario.es/clip/8e279718-1fa5-4399-a422-cc2a0799743f_16-9-discover-aspect-ratio_default_0.jpg" type="image/jpeg" fileSize="37388" width="1200" height="675"/>
      <media:title><![CDATA[El PSC ganó las elecciones catalanas con 42 escaños y el independentismo perdió la mayoría absoluta]]></media:title>
      <media:thumbnail url="https://static.eldiario.es/clip/8e279718-1fa5-4399-a422-cc2a0799743f_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675"/>
      <media:keywords><![CDATA[Elecciones en España,Cataluña]]></media:keywords>
    </item>
    <item>
      <title><![CDATA[Cataluña anuncia un tope a los precios de los alquileres frente a la crisis habitacional]]></title>
      <link><![CDATA[https://www.eldiarioar.com/mundo/cataluna-anuncia-tope-precios-alquileres-frente-crisis-habitacional_1_10829869.html]]></link>
      <description><![CDATA[<p><img src="https://static.eldiario.es/clip/c0feb8a7-33cd-436d-9a5d-b0a6d9def73c_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675" alt="Cataluña anuncia un tope a los precios de los alquileres frente a la crisis habitacional"></p><div class="subtitles"><p class="subtitle">El Ministerio de Vivienda de España da su visto bueno a la propuesta de regulación de las rentas en los 140 municipios catalanes más afectados por las subidas de los alquileres.</p></div><p class="article-text">
        <strong>Catalu&ntilde;a ser&aacute; la primera comunidad aut&oacute;noma espa&ntilde;ola que regule el precio de los alquileres a partir de la Ley de Vivienda</strong>, aprobada en mayo de 2023. La medida se aplicar&aacute; a partir de febrero. Lo anunci&oacute; la consejera de Territorio de la Generalitat, Ester Capella, tras una reuni&oacute;n este jueves con la ministra de Vivienda de Espa&ntilde;a, Isabel Rodr&iacute;guez.
    </p><p class="article-text">
        El ministerio da finalmente el visto bueno a la solicitud de la Generalitat para <strong>limitar el precio de las viviendas de alquiler en los 140 municipios que consideran tensionados</strong> &ndash;es decir con una oferta insuficiente de vivienda&ndash;, entre los que se cuentan las cuatro capitales de provincia y la mayor parte del &aacute;rea metropolitana de Barcelona.&nbsp;
    </p><p class="article-text">
        Uno de los principales escollos para empezar con la regulaci&oacute;n en Catalunya, la &uacute;nica comunidad que lo ha solicitado formalmente, era que el ministerio no dispon&iacute;a todav&iacute;a de un &Iacute;ndice de Precios con el que fijar los alquileres m&aacute;ximos. Seg&uacute;n Capella, Generalitat y Gobierno trabajar&aacute;n conjuntamente para adaptar este &iacute;ndice y que est&eacute; a punto en febrero.
    </p><p class="article-text">
        El Ministerio de Vivienda, por su parte, confirm&oacute; los avances en una nota de prensa en la que especifica que el &Iacute;ndice estar&aacute; publicado &ldquo;a lo largo de febrero&rdquo;. La otra discrepancia entre ambas Administraciones, y que ten&iacute;a que ver con el cumplimiento de la memoria justificativa de la ley, tambi&eacute;n se resolvi&oacute;, seg&uacute;n fuentes del encuentro.
    </p><p class="article-text">
        De esta forma, Catalunya recuperar&aacute; un tope a los alquileres que tuvo en vigor durante un a&ntilde;o y medio, aprobado en ese caso por el Parlament, y que el Tribunal Constitucional tumb&oacute; en marzo de 2022.&nbsp;
    </p><p class="article-text">
        Con unos <strong>precios del alquiler que superan los 1.100 euros de media en Barcelona </strong>y convencidos de los beneficios de la regulaci&oacute;n, la Generalitat fue la primera administraci&oacute;n auton&oacute;mica que ya en verano traslad&oacute; al ministerio de Vivienda una solicitud para regular las rentas en 140 municipios. En esas poblaciones habitan el 80% de los catalanes.
    </p><p class="article-text">
        Lo que establece la Ley de Vivienda es que en aquellas ciudades consideradas tensionadas los nuevos contratos de alquiler no pueden tener un precio superior al que estuvo vigente hasta entonces, a excepci&oacute;n de una actualizaci&oacute;n anual que no puede ser superior al 3% (o llegar al 10% si el propietario acredita obras de rehabilitaci&oacute;n). En el caso de los grandes propietarios, adem&aacute;s, el precio no podr&aacute; superar el que fije el citado &Iacute;ndice de Precios de Referencia, con lo que incluso se podr&iacute;a llegar a bajar una mensualidad si est&aacute; por encima.&nbsp;
    </p><p class="article-text">
        Desde el Sindicato de Inquilinas han celebrado la medida, pero lamentan que &ldquo;llega tarde&rdquo;. Tal como ha recordado la portavoz Carmen Arcarazo, &ldquo;el PSOE se comprometi&oacute; a esto en 2019 y, desde entonces, los precios han subido un 18%&rdquo;. En este sentido, ha alertado que &ldquo;no es s&oacute;lo importante garantizar que los alquileres no van a subir, sino que empiecen a bajar para que las familias puedan ganar ox&iacute;geno&rdquo;.
    </p>]]></description>
      <dc:creator><![CDATA[Pau Rodríguez]]></dc:creator>
      <guid isPermaLink="true"><![CDATA[https://www.eldiarioar.com/mundo/cataluna-anuncia-tope-precios-alquileres-frente-crisis-habitacional_1_10829869.html]]></guid>
      <pubDate><![CDATA[Thu, 11 Jan 2024 15:16:59 +0000]]></pubDate>
      <enclosure url="https://static.eldiario.es/clip/c0feb8a7-33cd-436d-9a5d-b0a6d9def73c_16-9-discover-aspect-ratio_default_0.jpg" length="631602" type="image/jpeg"/>
      <media:content url="https://static.eldiario.es/clip/c0feb8a7-33cd-436d-9a5d-b0a6d9def73c_16-9-discover-aspect-ratio_default_0.jpg" type="image/jpeg" fileSize="631602" width="1200" height="675"/>
      <media:title><![CDATA[Cataluña anuncia un tope a los precios de los alquileres frente a la crisis habitacional]]></media:title>
      <media:thumbnail url="https://static.eldiario.es/clip/c0feb8a7-33cd-436d-9a5d-b0a6d9def73c_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675"/>
      <media:keywords><![CDATA[Alquileres,España,Cataluña]]></media:keywords>
    </item>
    <item>
      <title><![CDATA[El PSOE y Junts se comprometen a “abrir una nueva etapa” que resuelva “el conflicto histórico” en Cataluña]]></title>
      <link><![CDATA[https://www.eldiarioar.com/mundo/psoe-junts-comprometen-abrir-nueva-etapa-resuelva-conflicto-historico-cataluna_1_10672113.html]]></link>
      <description><![CDATA[<p><img src="https://static.eldiario.es/clip/7085ae02-aa93-47dc-ba7e-d8d7917a9cdd_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675" alt="El PSOE y Junts se comprometen a “abrir una nueva etapa” que resuelva “el conflicto histórico” en Cataluña"></p><div class="subtitles"><p class="subtitle">Los socialistas y los independentistas catalanes pactan los desacuerdos en el texto del acuerdo para poner fin al conflicto en Cataluña : "Junts considera legítimo el resultado y el mandato del referéndum del 1 de octubre, así como la declaración de independencia del 27 de octubre de 2017. El PSOE niega toda legalidad y validez al referéndum y a la declaración, y mantiene su rechazo a cualquier acción unilateral", reza el texto.</p></div><p class="article-text">
        El pacto entre el PSOE y Junts supone &ldquo;abrir una nueva etapa y contribuir a resolver el conflicto hist&oacute;rico sobre el futuro pol&iacute;tico de Catalu&ntilde;a&rdquo;, seg&uacute;n se&ntilde;ala el documento del acuerdo al que tuvo acceso elDiario.es y que fue adelantado por el programa de televisi&oacute;n laSexta. Para ello, en ese pacto se establece una mesa de negociaci&oacute;n entre ambos partidos que incluya un mecanismo para &ldquo;acompa&ntilde;ar, verificar y realizar seguimiento de todo el proceso de negociaci&oacute;n y de los acuerdos entre ambas formaciones a los que se llegue&rdquo;.
    </p><p class="article-text">
        En el acuerdo pol&iacute;tico firmado la pasada madrugada, el PSOE y Junts pactan los desacuerdos tras muchos d&iacute;as de tiras y aflojas y hacen un relato diferente de los hechos del denominado proc&eacute;s. As&iacute;, mientras para la formaci&oacute;n del expresidente de la Generalitat y eurodiputado de Junts, Carles Puigdemont es &ldquo;leg&iacute;timo el resultado y el mandato&rdquo; del 1-O,<strong> los socialistas dejan claro su rechazo a la &ldquo;legalidad y validez del refer&eacute;ndum y de la declaraci&oacute;n de independencia&rdquo;.</strong>
    </p><p class="article-text">
        En esta negociaci&oacute;n pol&iacute;tica a la que se comprometen de ahora en adelante sobre el encaje territorial de Catalu&ntilde;a se tratar&aacute;, seg&uacute;n el acuerdo firmado, sobre dos grandes asuntos: la &ldquo;superaci&oacute;n de los d&eacute;ficits y limitaciones del autogobierno&rdquo; y &ldquo;las relativas al reconocimiento nacional de Catalu&ntilde;a&rdquo;. En el mismo acuerdo Junts ya hace una declaraci&oacute;n de intenciones cuando adelanta que reclamar&aacute; un refer&eacute;ndum pactado y un pacto fiscal para Catalu&ntilde;a.
    </p><p class="article-text">
        En el documento firmado y que ser&aacute; presentado oficialmente este jueves, los socialistas y los independentistas catalanes constatan que ambas formaciones parten de &ldquo;posiciones divergentes&rdquo;, a pesar de lo cual se comprometen a desarrollar &ldquo;una din&aacute;mica para la resoluci&oacute;n&rdquo; del conflicto &ldquo;en t&eacute;rminos diferentes a los de la &uacute;ltima legislatura y procurar la gobernabilidad durante la XV legislatura&rdquo;. 
    </p><iframe src="https://geo.dailymotion.com/player/x8zbz.html?video=x8phj2q" allowfullscreen allow="fullscreen; picture-in-picture; web-share"></iframe><p class="article-text">
        En el documento del acuerdo pol&iacute;tico, que a&uacute;n no incluye los detalles de la ley de amnist&iacute;a que ser&aacute; presentada la semana que viene, se expone que el gran ciclo de movilizaciones independentistas tiene su origen en la sentencia del Tribunal Constitucional de 2010 que tumb&oacute; el &ldquo;estatut&middot; catal&aacute;n. &rdquo;La sentencia del TC del a&ntilde;o 2010 conllev&oacute; que hoy Catalu&ntilde;a sea la &uacute;nica comunidad aut&oacute;noma con un estatuto que no ha sido votado &iacute;ntegramente por su ciudadan&iacute;a. Como reacci&oacute;n, se produjo una gran manifestaci&oacute;n de protesta y, desde 2015, se han ido repitiendo mayor&iacute;as absolutas parlamentarias independentistas en el Parlament en las sucesivas elecciones auton&oacute;micas, as&iacute; como movilizaciones masivas de signo independentista&ldquo;, se describe. 
    </p><p class="article-text">
        El texto contin&uacute;a se&ntilde;alando a los gobiernos del PP. &ldquo;Lamentablemente, los gobiernos de entonces no favorecieron la negociaci&oacute;n pol&iacute;tica&rdquo;, se apunta respecto a las propuestas antes de describir los hechos ocurridos en 2017. &ldquo;Tras estos hechos, las instituciones catalanas promovieron, primero, una consulta popular el 9 de noviembre de 2014 y, despu&eacute;s, un refer&eacute;ndum de independencia el 1 de octubre de 2017 &ndash;ambos suspendidos y posteriormente anulados por el TC&ndash; con una participaci&oacute;n masiva en favor de la independencia de Catalu&ntilde;a. El intento del Gobierno de impedir el refer&eacute;ndum dio lugar a unas im&aacute;genes que nos impactaron a todos dentro y fuera de nuestras fronteras&rdquo;.
    </p><h3 class="article-text">&ldquo;Una oportunidad hist&oacute;rica&rdquo;</h3><p class="article-text">
        En el segundo punto del documento pactado entre Junts y ERC, las formaciones lideradas por Pedro S&aacute;nchez y Carles Puigdemont vuelven a subrayar que, a pesar de&nbsp;&ldquo;las profundas divergencias que han existido y que han dado lugar a un conflicto&rdquo;, la conclusi&oacute;n compartida es &ldquo;que solo la pol&iacute;tica en democracia puede encauzar para buscar una soluci&oacute;n, dado que, seis a&ntilde;os despu&eacute;s, la cuesti&oacute;n de fondo sigue sin resolverse&rdquo;.
    </p><p class="article-text">
        <strong>&ldquo;A pesar de las discrepancias estructurales que existen dada la distancia entre nuestros proyectos nacionales&rdquo;, se prosigue, &ldquo;estamos preparados para abrir una nueva etapa</strong> en la que, a partir del respeto y el reconocimiento del otro, se busque una soluci&oacute;n pol&iacute;tica y negociada al conflicto&rdquo;. Sobre esas v&iacute;as bilaterales basadas en la negociaci&oacute;n entre el Gobierno de Espa&ntilde;a y la Generalitat y entre el PSOE y los partidos independentistas catalanes, se insiste de manera reiterada en que &ldquo;la resoluci&oacute;n&rdquo; del conflicto &ldquo;debe ser negociada y acordada&rdquo;, una renuncia impl&iacute;cita a la v&iacute;a unilateral que caracteriz&oacute; al desenlace del proc&eacute;s en 2017.
    </p><p class="article-text">
        Sin embargo, es llamativo el encabezado del ep&iacute;grafe de los &ldquo;acuerdos&rdquo; que registra el documento. En ese punto las dos formaciones exponen abiertamente las profundas diferencias respecto a la visi&oacute;n pol&iacute;tica de lo ocurrido en 2017, con un rechazo expl&iacute;cito de los socialistas a la v&iacute;a unilateral y una menci&oacute;n a la ilegalidad del refer&eacute;ndum del 1O y la de la DUI, y una defensa encendida de ese proc&eacute;s por parte de Junts. 
    </p><p class="article-text">
        Tras semanas de negociaciones, y a falta de un relato com&uacute;n, el documento refleja lo siguiente: &ldquo;Junts considera leg&iacute;timo el resultado y el mandato del refer&eacute;ndum del 1 de octubre, as&iacute; como la declaraci&oacute;n de independencia del 27 de octubre de 2017. Por otro lado, el PSOE niega toda legalidad y validez al refer&eacute;ndum y a la declaraci&oacute;n, y mantiene su rechazo a cualquier acci&oacute;n unilateral&rdquo;. Y, sin embargo, &ldquo;constatan que se pueden alcanzar acuerdos importantes sin renunciar a las respectivas posiciones&rdquo;. 
    </p><p class="article-text">
        Para el proceso de negociaci&oacute;n que ahora debe abrirse ambas partes admiten partir de una situaci&oacute;n de &ldquo;desconfianzas mutuas&rdquo;, ante las cuales acuerdan un mecanismo de mediaci&oacute;n. &ldquo;PSOE y Junts han acordado dotarse de un mecanismo entre ambas organizaciones, internacional, que tenga las funciones de acompa&ntilde;ar, verificar y realizar seguimiento de todo el proceso de negociaci&oacute;n y de los acuerdos entre ambas formaciones a los que se llegue&rdquo;.
    </p><p class="article-text">
        Respecto a los contenidos espec&iacute;ficos que ser&aacute;n materia de negociaci&oacute;n de ahora en adelante, el acuerdo se centra en &ldquo;la superaci&oacute;n de los d&eacute;ficits y limitaciones del autogobierno y las relativas al reconocimiento nacional de Catalu&ntilde;a&rdquo;.&nbsp;Y se acotan los temas a abordar en una primera reuni&oacute;n que ya se fija para este mismo mes de noviembre. 
    </p><p class="article-text">
        &ldquo;Junts propondr&aacute; la celebraci&oacute;n de un refer&eacute;ndum de autodeterminaci&oacute;n sobre el futuro pol&iacute;tico de Catalu&ntilde;a amparado en el art&iacute;culo 92 de la Constituci&oacute;n&rdquo;. Una propuesta que el PSOE rechaza de plano: &ldquo;Por su parte, el PSOE defender&aacute; el amplio desarrollo, a trav&eacute;s de los mecanismos jur&iacute;dicos oportunos, del Estatut de 2006, as&iacute; como el pleno despliegue y el respeto a las instituciones del autogobierno y a la singularidad institucional, cultural y ling&uuml;&iacute;stica de Catalu&ntilde;a&rdquo;. 
    </p><p class="article-text">
        En el cap&iacute;tulo de autogobierno, queda reflejado que &ldquo;Junts propondr&aacute; de entrada una modificaci&oacute;n de la Ley Org&aacute;nica de Financiaci&oacute;n&rdquo; auton&oacute;mica (LOFCA). que establezca una cl&aacute;usula de excepci&oacute;n de Catalu&ntilde;a que reconozca la singularidad en la que se organiza el sistema institucional de la Generalitat y que facilite la cesi&oacute;n del 100% de todos los tributos que se pagan en Catalu&ntilde;a. Y, por su parte, el PSOE apostar&aacute; por medidas que permitan la autonom&iacute;a financiera y el acceso al mercado de Catalunya, as&iacute; como un di&aacute;logo singular sobre el impacto del actual modelo de financiaci&oacute;n sobre Catalu&ntilde;a&ldquo;.&nbsp;
    </p><p class="article-text">
        A falta de cerrar un acuerdo global con el resto de formaciones que apoyar&aacute;n la investidura respecto a la ley de amnist&iacute;a, en el pacto entre Junts y el PSOE se defiende la medida de gracia &ldquo;para procurar la plena normalidad pol&iacute;tica, institucional y social como requisito imprescindible para abordar los retos del futuro inmediato&rdquo;.
    </p><p class="article-text">
        &ldquo;Esta ley debe incluir tanto a los responsables como a los ciudadanos que, antes y despu&eacute;s de la consulta de 2014 y del refer&eacute;ndum de 2017, han sido objeto de decisiones o procesos judiciales vinculados a estos eventos&rdquo;, prosigue, antes de hacer referencia a uno de los principales escollos que han dilatado la negociaci&oacute;n en los &uacute;ltimos d&iacute;as. &ldquo;Se tendr&aacute;n en cuenta en la aplicaci&oacute;n de la ley de amnist&iacute;a en la medida que pudieran derivarse situaciones comprendidas en el concepto lawfare o judicializaci&oacute;n de la pol&iacute;tica, con las consecuencias que, en su caso, puedan dar lugar a acciones de responsabilidad o modificaciones legislativas&rdquo;. 
    </p><p class="article-text">
        &ldquo;La ley de amnist&iacute;a est&aacute; acordada&rdquo;, ha explicado este jueves el 'n&uacute;mero 3' del PSOE, Santos Cerd&aacute;n, en rueda de prensa desde Bruselas, donde ha matizado que antes de su registro &ldquo;la tienen que ver el resto de grupos&rdquo; que la van a apoyar. &ldquo;Por eso no la presentamos&rdquo;, ha matizado. Lo que ha sucedido durante la semana por las imputaciones por terrorismo a Carles Puigdemont ha sido determinante para obligar a las partes a hacer una relectura de la ley de amnist&iacute;a. No obstante, Santos Cerd&aacute;n ha asegurado que la &ldquo;ley est&aacute; acordada&rdquo;. Ahora son &ldquo;el resto de partidos&rdquo; que apoyar&aacute;n la investidura &ldquo;los que tienen que revisarlo&rdquo;, informa&nbsp;Irene Castro.
    </p><p class="article-text">
        El acuerdo contempla, finalmente, el apoyo de Junts a la investidura de Pedro S&aacute;nchez as&iacute; como &ldquo;a la estabilidad de la legislatura, sujeta a los avances y cumplimiento de los acuerdos que resulten de las negociaciones en los dos &aacute;mbitos permanentes se&ntilde;alados en el punto segundo&rdquo;.&nbsp;
    </p><h3 class="article-text">Quince semanas de negociaciones</h3><p class="article-text">
        Tal y como adelant&oacute; elDiario.es, PSOE y Junts han anunciado este jueves el pacto pol&iacute;tico que permitir&aacute; a Pedro S&aacute;nchez garantizarse la investidura en un Pleno del Congreso que se convocar&aacute; para la semana que viene. La ley de amnist&iacute;a, el principal pacto entre ambas fuerzas y el que m&aacute;s ha retrasado su cierre final, tambi&eacute;n ser&aacute; presentada y registrada la pr&oacute;xima semana. 
    </p><p class="article-text">
        El acuerdo se produce 15 semanas despu&eacute;s de las elecciones y a 18 d&iacute;as de que expire el plazo l&iacute;mite &ndash;el pr&oacute;ximo d&iacute;a 27&ndash;, tras el cual ser&iacute;an convocadas autom&aacute;ticamente unas nuevas elecciones generales para enero. Respecto a la amnist&iacute;a, tras dilatarse las conversaciones en los &uacute;ltimos d&iacute;as a cuenta de varios escollos respecto al per&iacute;metro de la medida de gracia, los equipos negociadores desplazados en Bruselas, donde reside el expresident de la Generalitat y eurodiputado Carles Puigdemont, han rematado los flecos pendientes y han acordado que la oficialidad del pacto de investidura se produzca este mismo jueves, en mitad de una dur&iacute;sima ofensiva pol&iacute;tica y judicial en los &uacute;ltimos d&iacute;as, aderezada de protestas ultras violentas a las puertas de las sedes socialistas. 
    </p><p class="article-text">
        El pacto de hoy llega despu&eacute;s del proceso de investidura fallida de Alberto N&uacute;&ntilde;ez Feij&oacute;o, que fracas&oacute; en su intento de ser investido presidente el pasado 29 de septiembre, al no lograr m&aacute;s 's&iacute;es' que 'noes' en la votaci&oacute;n del Congreso en la que solo obtuvo el apoyo de Vox, de Coalici&oacute;n Canaria y de UPN, adem&aacute;s del de sus propios diputados. 
    </p><p class="article-text">
        S&aacute;nchez hab&iacute;a lanzado este mi&eacute;rcoles una llamada al acuerdo de investidura en plena escalada de acoso a los socialistas. &ldquo;Hechos como los que estamos viviendo nos reafirman, con m&aacute;s fuerza si cabe, en la necesidad de sacar adelante un gobierno de coalici&oacute;n progresista&rdquo;, dijo. 
    </p>]]></description>
      <dc:creator><![CDATA[José Enrique Monrosi / Arturo Puente / Iñigo Aduriz]]></dc:creator>
      <guid isPermaLink="true"><![CDATA[https://www.eldiarioar.com/mundo/psoe-junts-comprometen-abrir-nueva-etapa-resuelva-conflicto-historico-cataluna_1_10672113.html]]></guid>
      <pubDate><![CDATA[Thu, 09 Nov 2023 20:41:51 +0000]]></pubDate>
      <enclosure url="https://static.eldiario.es/clip/7085ae02-aa93-47dc-ba7e-d8d7917a9cdd_16-9-discover-aspect-ratio_default_0.jpg" length="187125" type="image/jpeg"/>
      <media:content url="https://static.eldiario.es/clip/7085ae02-aa93-47dc-ba7e-d8d7917a9cdd_16-9-discover-aspect-ratio_default_0.jpg" type="image/jpeg" fileSize="187125" width="1200" height="675"/>
      <media:title><![CDATA[El PSOE y Junts se comprometen a “abrir una nueva etapa” que resuelva “el conflicto histórico” en Cataluña]]></media:title>
      <media:thumbnail url="https://static.eldiario.es/clip/7085ae02-aa93-47dc-ba7e-d8d7917a9cdd_16-9-discover-aspect-ratio_default_0.jpg" width="1200" height="675"/>
      <media:keywords><![CDATA[Cataluña,Junts,PSOE,España]]></media:keywords>
    </item>
  </channel>
</rss>
