import json import folium # Charger les données depuis le fichier JSON with open("elections_2024.json", "r") as f: data = json.load(f) # Charger les coordonnées des départements depuis le fichier GeoJSON with open("departements.geojson", "r") as f: departements_geo = json.load(f) # Créer une carte centrée sur la France m = folium.Map(location=[46.2276, 2.2137], zoom_start=6) # Définir les couleurs pour le gradient colors = ['#f2f0f7', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'] # Calculer la valeur maximale de pourcentage_exprimes max_percent_exprimes = max(float(value["pourcentage_exprimes"].replace(',', '.')) for departement, values in data.items() for value in values if value["parti"] == "PARTI PIRATE") # Parcourir les départements et ajouter des polygones avec le gradient de couleur for departement, values in data.items(): for value in values: if value["parti"] == "PARTI PIRATE": percent_exprimes = float(value["pourcentage_exprimes"].replace(',', '.')) color_index = int((percent_exprimes / max_percent_exprimes) * (len(colors) - 1)) print(color_index) color = colors[color_index] for feature in departements_geo["features"]: if feature["properties"]["code"] == departement: # Ajouter le champ percent_exprimes à l'élément GeoJSON feature["properties"]["percent_exprimes"] = percent_exprimes folium.GeoJson( feature, name=f"Département {departement}", style_function=lambda x: { "fillColor": color, "color": "black", "weight": 1, "fillOpacity": 0.7 }, tooltip=folium.features.GeoJsonTooltip( fields=['nom', 'percent_exprimes'], aliases=['Département:', 'Pourcentage:'], style=f"background-color: {color};font-size: 1.5rem;", localize=True, sticky=False, labels=True, max_width=100, direction='auto', prefix='', suffix='' ), popup=folium.features.GeoJsonPopup( fields=['percent_exprimes'], aliases=['Pourcentage:'], style="background-color: white; font-size: 1.5rem;", localize=True, sticky=False, labels=True, max_width=100, direction='auto' ) ).add_to(m) # Ajouter une légende m.add_child(folium.LayerControl()) # Enregistrer la carte en HTML m.save("france_map.html")