1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| import plotly.graph_objects as go
import pandas as pd
species = sorted(list(data['esp'].unique()))
status_colors = {
1: 'red',
2: 'green',
3: 'blue'
}
colorscales = [[status / (len(status_colors) - 1), color] for status, color in enumerate(status_colors.values())]
text = data.apply(lambda row: f"Code département: {str(row['dept'])}"
, axis=1)
# Créez la figure initiale
fig = go.Figure()
# Ajoutez des traces pour chaque espèce
for specie in species:
df_temp = data[data['esp'] == specie]
fig.add_trace(go.Choroplethmapbox(
featureidkey="properties.code", # Clé du JSON pour la jointure avec la data
geojson=dep_data, # GeoJSON du département
locations=df_temp.dept, # Clé de la data pour la jointure
z=df_temp.category_numeric,# valeurs du champ qui correspond à 0.0, 0.5, 1.0
colorscale=colorscales,# valeurs obtenue pour correspondre à df_temp.category_numeric
colorbar=dict(
tick0=0,
dtick=1),#'viridis', # Palette de couleurs colorscales,#
#reversescale=True, # Inverse la montée de valeur sur la barre de couleurs
marker_opacity=0.6, # Transparence de la figure (entre 0 et 1)
text=text,#df_temp['some_field'], # Champ de texte affiché au passage de la souris
hoverinfo="text", # Doit être associé à la variable text ci-dessus
marker_line_width=0.8, # Taille du contour de département
visible=(specie==species[0]), #paramètre pour afficher que la première espèces de la liste deroulante
showscale=True, # Par défaut, l'échelle (barre de couleur) est visible
))
#boutons de liste déroulante pour les espèces
buttons = []
for specie in species:
visible = [False] * len(species)
visible[species.index(specie)] = True
buttons.append(dict(label=specie, method='update', args=[{'visible': visible}]))
updatemenus = [{'buttons': buttons,
'direction': 'down',
'showactive': True,
'x': 0,
'y': 1.1,
'xanchor': 'left'
}]
# Configurez les mises à jour de la figure
fig.update_layout(
title={
'text': f'Programme test',
'xref': 'paper',
'y': 0.95,
'x': 0,
'xanchor': 'left',
'yanchor': 'bottom',
},
updatemenus=updatemenus,
height=700, width=800,
mapbox=dict(
style="open-street-map",
zoom=4,
center={"lat": 46, "lon": 2}
))
fig.show() |
Partager