71 lines
3.1 KiB
Python
71 lines
3.1 KiB
Python
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='<b>',
|
|
suffix='</b>'
|
|
),
|
|
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")
|