From 25580d9ce922d16ee188882352eb3a4368127453 Mon Sep 17 00:00:00 2001
From: Arctusol <73721443+Arctusol@users.noreply.github.com>
Date: Mon, 2 Dec 2024 14:28:47 +0100
Subject: [PATCH] adding tooltip
---
pages/Focus_sur_l'obstetrique.py | 17 ++-
pages/Focus_sur_la_chirurgie.py | 39 ++++++-
pages/Focus_sur_la_medecine.py | 37 ++++++-
pages/Focus_sur_la_psy.py | 17 ++-
pages/Focus_sur_les_ssr.py | 53 +++++++--
pages/Predictions_hospitalieres.py | 172 +++++++++++++++++++++--------
pages/Votre_docteur_en_ligne_v2.py | 30 ++++-
pages/Vue_globale.py | 100 ++++++++++++-----
pages/carte_de_france.py | 24 +++-
9 files changed, 390 insertions(+), 99 deletions(-)
diff --git a/pages/Focus_sur_l'obstetrique.py b/pages/Focus_sur_l'obstetrique.py
index 9c56040..0424e00 100644
--- a/pages/Focus_sur_l'obstetrique.py
+++ b/pages/Focus_sur_l'obstetrique.py
@@ -38,7 +38,7 @@
""", unsafe_allow_html=True)
# Titre principal
-st.markdown("
🏥 Focus sur l'Obstétrique
", unsafe_allow_html=True)
+st.markdown("🏥 Focus sur l'Obstétrique
", unsafe_allow_html=True)
# Fonction de chargement des données
@st.cache_resource
@@ -106,7 +106,7 @@ def load_data():
# Affichage des métriques clés
st.subheader("Statistiques clés")
- col1, col2, col3 = st.columns(3)
+ col1, col2, col3, col_help = st.columns([1, 1, 1, 0.01])
with col1:
total_hospi = df_filtered['nbr_hospi'].sum()
@@ -120,5 +120,18 @@ def load_data():
evolution = df_filtered['evolution_percent_nbr_hospi'].mean()
st.metric("Évolution moyenne", f"{evolution:+.1f}%")
+ with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""📊 Ces métriques clés résument les données obstétriques :
+
+ - Total des hospitalisations : nombre total d'hospitalisations en obstétrique (accouchements, suivis de grossesse, etc.)
+ - Durée moyenne : temps moyen de séjour en maternité
+ - Évolution : tendance des hospitalisations par rapport à la période précédente
+
+ Note : Les durées de séjour en obstétrique sont généralement courtes et standardisées, sauf en cas de complications."""
+ )
+
else:
st.error("Impossible de charger les données. Veuillez réessayer plus tard.")
\ No newline at end of file
diff --git a/pages/Focus_sur_la_chirurgie.py b/pages/Focus_sur_la_chirurgie.py
index d412c72..04d32f0 100644
--- a/pages/Focus_sur_la_chirurgie.py
+++ b/pages/Focus_sur_la_chirurgie.py
@@ -38,7 +38,7 @@
# Titre principal
-st.markdown ("🏥 Focus sur la Chirurgie
", unsafe_allow_html=True)
+st.markdown ("🏥 Focus sur la Chirurgie
", unsafe_allow_html=True)
# Fonction de chargement des données
@@ -109,7 +109,7 @@ def load_data():
# Affichage des métriques clés
st.subheader("Statistiques clés")
- col1, col2, col3 = st.columns(3)
+ col1, col2, col3, col_help = st.columns([1, 1, 1, 0.01])
with col1:
total_hospi = df_filtered['nbr_hospi'].sum()
@@ -122,7 +122,18 @@ def load_data():
with col3:
evolution = df_filtered['evolution_percent_nbr_hospi'].mean()
st.metric("Évolution moyenne", f"{evolution:+.1f}%")
-
+
+ with col_help:
+ st.metric(
+ label="help",
+ value="",
+ help="""📊 Ces métriques clés résument les données chirurgicales :
+
+ - Total des hospitalisations : nombre total d'interventions chirurgicales
+ - Durée moyenne : temps moyen d'hospitalisation post-chirurgie
+ - Évolution : tendance des interventions par rapport à la période précédente"""
+ )
+
# Préparation des données pour le graphique 3D
group_cols = ['annee']
location_label = 'Région' if niveau_administratif == "Régions" else 'Département'
@@ -176,7 +187,27 @@ def load_data():
)
# Affichage du graphique
- st.plotly_chart(fig_3d, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig_3d, use_container_width=True)
+ with col_help:
+ st.metric(
+ label="help",
+ value="",
+ help="""🔍 Ce graphique 3D visualise l'évolution des interventions chirurgicales :
+
+ Navigation :
+ - Utilisez la souris pour faire pivoter le graphique
+ - Double-cliquez pour réinitialiser la vue
+ - Survolez les points pour voir les détails
+
+ Axes :
+ - X : Année
+ - Y : Région/Département
+ - Z : Nombre d'interventions (échelle logarithmique)
+
+ Les couleurs différentes représentent les différentes régions/départements."""
+ )
else:
st.error("Impossible de charger les données. Veuillez réessayer plus tard.")
\ No newline at end of file
diff --git a/pages/Focus_sur_la_medecine.py b/pages/Focus_sur_la_medecine.py
index fd09833..eb1628a 100644
--- a/pages/Focus_sur_la_medecine.py
+++ b/pages/Focus_sur_la_medecine.py
@@ -38,7 +38,7 @@
# Titre principal
-st.markdown("🏥 Focus sur la Médecine
", unsafe_allow_html=True)
+st.markdown("🏥 Focus sur la Médecine
", unsafe_allow_html=True)
# Fonction de chargement des données
@@ -108,7 +108,7 @@ def load_data():
# Affichage des métriques clés
st.subheader("Statistiques clés")
- col1, col2, col3 = st.columns(3)
+ col1, col2, col3, col_help = st.columns([1, 1, 1, 0.01])
with col1:
total_hospi = df_filtered['nbr_hospi'].sum()
@@ -121,6 +121,17 @@ def load_data():
with col3:
evolution = df_filtered['evolution_percent_nbr_hospi'].mean()
st.metric("Évolution moyenne", f"{evolution:+.1f}%")
+
+ with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""📊 Ces métriques clés résument les données de médecine :
+
+ - Total des hospitalisations : nombre total de patients hospitalisés
+ - Durée moyenne : temps moyen passé à l'hôpital
+ - Évolution : changement en pourcentage par rapport à la période précédente"""
+ )
# Préparation des données pour le graphique 3D
group_cols = ['annee']
@@ -175,7 +186,27 @@ def load_data():
)
# Affichage du graphique
- st.plotly_chart(fig_3d, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig_3d, use_container_width=True)
+ with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""🔍 Ce graphique 3D montre l'évolution des hospitalisations en médecine :
+
+ Navigation :
+ - Utilisez la souris pour faire pivoter le graphique
+ - Double-cliquez pour réinitialiser la vue
+ - Survolez les points pour voir les détails
+
+ Axes :
+ - X : Année
+ - Y : Région/Département
+ - Z : Nombre d'hospitalisations (échelle logarithmique)
+
+ Les couleurs différentes représentent les différentes régions/départements."""
+ )
else:
st.error("Impossible de charger les données. Veuillez réessayer plus tard.")
\ No newline at end of file
diff --git a/pages/Focus_sur_la_psy.py b/pages/Focus_sur_la_psy.py
index 72e7cec..9e5fcc8 100644
--- a/pages/Focus_sur_la_psy.py
+++ b/pages/Focus_sur_la_psy.py
@@ -38,7 +38,7 @@
""", unsafe_allow_html=True)
# Titre principal
-st.markdown ("🏥 Focus sur la Psychiatrie
", unsafe_allow_html=True)
+st.markdown ("🏥 Focus sur la Psychiatrie
", unsafe_allow_html=True)
# Fonction de chargement des données
@st.cache_resource
@@ -106,7 +106,7 @@ def load_data():
# Affichage des métriques clés
st.subheader("Statistiques clés")
- col1, col2, col3 = st.columns(3)
+ col1, col2, col3, col_help = st.columns([1, 1, 1, 0.01])
with col1:
total_hospi = df_filtered['nbr_hospi'].sum()
@@ -120,5 +120,18 @@ def load_data():
evolution = df_filtered['evolution_percent_nbr_hospi'].mean()
st.metric("Évolution moyenne", f"{evolution:+.1f}%")
+ with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""📊 Ces métriques clés résument les données psychiatriques :
+
+ - Total des hospitalisations : nombre total d'hospitalisations en psychiatrie
+ - Durée moyenne : temps moyen de séjour en service psychiatrique
+ - Évolution : tendance des hospitalisations psychiatriques par rapport à la période précédente
+
+ Note : Les durées de séjour en psychiatrie sont généralement plus longues que dans les autres services."""
+ )
+
else:
st.error("Impossible de charger les données. Veuillez réessayer plus tard.")
\ No newline at end of file
diff --git a/pages/Focus_sur_les_ssr.py b/pages/Focus_sur_les_ssr.py
index 0085e80..0077d84 100644
--- a/pages/Focus_sur_les_ssr.py
+++ b/pages/Focus_sur_les_ssr.py
@@ -38,7 +38,7 @@
""", unsafe_allow_html=True)
# Titre principal
-st.markdown("🏥 Focus sur les SSR
", unsafe_allow_html=True)
+st.markdown("🏥 Focus sur les SSR
", unsafe_allow_html=True)
# Fonction de chargement des données
@st.cache_resource
@@ -106,7 +106,7 @@ def load_data():
# Affichage des métriques clés
st.subheader("Statistiques clés")
- col1, col2, col3 = st.columns(3)
+ col1, col2, col3, col_help = st.columns([1, 1, 1, 0.01])
with col1:
total_hospi = df_filtered['nbr_hospi'].sum()
@@ -120,6 +120,19 @@ def load_data():
evolution = df_filtered['evolution_percent_nbr_hospi'].mean()
st.metric("Évolution moyenne", f"{evolution:+.1f}%")
+ with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""📊 Ces métriques clés résument les données SSR (Soins de Suite et de Réadaptation) :
+
+ - Total des hospitalisations : nombre total de patients en SSR
+ - Durée moyenne : temps moyen de séjour en SSR
+ - Évolution : tendance des admissions par rapport à la période précédente
+
+ Note : Les SSR sont des services spécialisés dans la rééducation et la réadaptation, avec des durées de séjour généralement plus longues."""
+ )
+
# Graphiques spécifiques aux SSR
st.subheader("Analyse détaillée")
@@ -128,15 +141,33 @@ def load_data():
age_data = df_filtered[age_columns].sum()
age_data.index = [col.replace('tranche_age_', '') for col in age_data.index]
- fig = px.bar(
- x=age_data.index,
- y=age_data.values,
- title="Distribution par tranche d'âge",
- labels={'x': "Tranche d'âge", 'y': "Nombre d'hospitalisations"}
- )
- fig.update_traces(marker_color=MAIN_COLOR)
- fig.update_layout(template='plotly_white')
- st.plotly_chart(fig, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ fig = px.bar(
+ x=age_data.index,
+ y=age_data.values,
+ title="Distribution par tranche d'âge",
+ labels={'x': "Tranche d'âge", 'y': "Nombre d'hospitalisations"}
+ )
+ fig.update_traces(marker_color=MAIN_COLOR)
+ fig.update_layout(template='plotly_white')
+ st.plotly_chart(fig, use_container_width=True)
+
+ with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""📈 Distribution par âge en SSR :
+
+ Ce graphique montre la répartition des patients par tranche d'âge dans les services SSR.
+
+ Interprétation :
+ - L'axe horizontal montre les tranches d'âge
+ - L'axe vertical indique le nombre d'hospitalisations
+ - La hauteur des barres représente le volume de patients
+
+ Note : Les SSR accueillent souvent une population plus âgée nécessitant une rééducation post-opératoire ou un suivi prolongé."""
+ )
else:
st.error("Impossible de charger les données. Veuillez réessayer plus tard.")
\ No newline at end of file
diff --git a/pages/Predictions_hospitalieres.py b/pages/Predictions_hospitalieres.py
index 02b75f5..a39496a 100644
--- a/pages/Predictions_hospitalieres.py
+++ b/pages/Predictions_hospitalieres.py
@@ -29,7 +29,7 @@
ACCENT_COLOR = '#3D7317' # Vert foncé pour les accents
# Titre principal
-st.markdown("🔮 Prédictions Hospitalières
", unsafe_allow_html=True)
+st.markdown("🔮 Prédictions Hospitalières
", unsafe_allow_html=True)
# Sélecteur de type de prédiction
prediction_type = st.selectbox(
@@ -66,27 +66,46 @@ def generate_mock_data(days=365):
""", unsafe_allow_html=True)
# Graphique de prédiction
- df = generate_mock_data()
- fig = go.Figure()
- fig.add_trace(go.Scatter(
- x=df['Date'][:180],
- y=df['Valeur'][:180],
- name='Données historiques',
- line=dict(color=MAIN_COLOR)
- ))
- fig.add_trace(go.Scatter(
- x=df['Date'][180:],
- y=df['Valeur'][180:],
- name='Prédictions',
- line=dict(color=SECONDARY_COLOR, dash='dash')
- ))
- fig.update_layout(
- title='Prédiction des besoins en lits',
- xaxis_title='Date',
- yaxis_title='Nombre de lits nécessaires',
- template='plotly_white'
- )
- st.plotly_chart(fig, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ df = generate_mock_data()
+ fig = go.Figure()
+ fig.add_trace(go.Scatter(
+ x=df['Date'][:180],
+ y=df['Valeur'][:180],
+ name='Données historiques',
+ line=dict(color=MAIN_COLOR)
+ ))
+ fig.add_trace(go.Scatter(
+ x=df['Date'][180:],
+ y=df['Valeur'][180:],
+ name='Prédictions',
+ line=dict(color=SECONDARY_COLOR, dash='dash')
+ ))
+ fig.update_layout(
+ title='Prédiction des besoins en lits',
+ xaxis_title='Date',
+ yaxis_title='Nombre de lits nécessaires',
+ template='plotly_white'
+ )
+ st.plotly_chart(fig, use_container_width=True)
+
+ with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""📈 Graphique de prédiction des besoins en lits :
+
+ - Ligne continue : données historiques observées
+ - Ligne pointillée : prédictions futures
+
+ Le modèle prend en compte :
+ - Les tendances historiques
+ - Les variations saisonnières
+ - Les facteurs démographiques
+
+ Utilisez les filtres en haut pour affiner les prédictions par région et spécialité."""
+ )
elif prediction_type == "Tendances d'hospitalisation":
st.markdown("""
@@ -98,20 +117,39 @@ def generate_mock_data(days=365):
""", unsafe_allow_html=True)
# Graphique des tendances
- df = generate_mock_data()
- fig = px.line(df, x='Date', y='Valeur',
- title='Tendances d\'hospitalisation prévues')
- fig.update_traces(line_color=MAIN_COLOR)
- fig.add_hrect(
- y0=df['Valeur'].mean() - df['Valeur'].std(),
- y1=df['Valeur'].mean() + df['Valeur'].std(),
- fillcolor=SECONDARY_COLOR,
- opacity=0.2,
- layer="below",
- line_width=0,
- )
- fig.update_layout(template='plotly_white')
- st.plotly_chart(fig, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ df = generate_mock_data()
+ fig = px.line(df, x='Date', y='Valeur',
+ title='Tendances d\'hospitalisation prévues')
+ fig.update_traces(line_color=MAIN_COLOR)
+ fig.add_hrect(
+ y0=df['Valeur'].mean() - df['Valeur'].std(),
+ y1=df['Valeur'].mean() + df['Valeur'].std(),
+ fillcolor=SECONDARY_COLOR,
+ opacity=0.2,
+ layer="below",
+ line_width=0,
+ )
+ fig.update_layout(template='plotly_white')
+ st.plotly_chart(fig, use_container_width=True)
+
+ with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""📈 Analyse des tendances d'hospitalisation :
+
+ - Ligne bleue : évolution prévue des hospitalisations
+ - Zone colorée : intervalle de confiance
+
+ Le graphique montre :
+ - Les variations saisonnières attendues
+ - Les tendances à long terme
+ - Les périodes de forte/faible activité
+
+ La zone colorée représente la plage de valeurs probable (±1 écart-type)."""
+ )
else: # Durées de séjour
st.markdown("""
@@ -123,28 +161,64 @@ def generate_mock_data(days=365):
""", unsafe_allow_html=True)
# Graphique des durées de séjour
- services = ['Médecine', 'Chirurgie', 'Obstétrique', 'SSR', 'Psychiatrie']
- durees = np.random.normal(7, 2, len(services))
- fig = go.Figure(data=[
- go.Bar(name='Durée moyenne actuelle', x=services, y=durees, marker_color=MAIN_COLOR),
- go.Bar(name='Prévision à 3 mois', x=services, y=durees*1.1, marker_color=SECONDARY_COLOR)
- ])
- fig.update_layout(
- title='Durées moyennes de séjour par service',
- barmode='group',
- template='plotly_white'
- )
- st.plotly_chart(fig, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ services = ['Médecine', 'Chirurgie', 'Obstétrique', 'SSR', 'Psychiatrie']
+ durees = np.random.normal(7, 2, len(services))
+ fig = go.Figure(data=[
+ go.Bar(name='Durée moyenne actuelle', x=services, y=durees, marker_color=MAIN_COLOR),
+ go.Bar(name='Prévision à 3 mois', x=services, y=durees*1.1, marker_color=SECONDARY_COLOR)
+ ])
+ fig.update_layout(
+ title='Durées moyennes de séjour par service',
+ barmode='group',
+ template='plotly_white'
+ )
+ st.plotly_chart(fig, use_container_width=True)
+
+ with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""⏱️ Prévision des durées de séjour :
+
+ Comparaison par service :
+ - Barres bleues : durées moyennes actuelles
+ - Barres vertes : prévisions à 3 mois
+
+ Caractéristiques par service :
+ - Médecine : séjours courts à moyens
+ - Chirurgie : durée variable selon l'intervention
+ - Obstétrique : séjours courts et standardisés
+ - SSR : séjours longs de réadaptation
+ - Psychiatrie : séjours généralement plus longs
+
+ Ces prévisions aident à optimiser la gestion des lits."""
+ )
# Métriques de performance
st.markdown("### 📊 Métriques de performance du modèle")
-col1, col2, col3 = st.columns(3)
+col1, col2, col3, col_help = st.columns([1, 1, 1, 0.01])
with col1:
st.metric("Précision du modèle", "87%", "↑ 2%")
with col2:
st.metric("MAE", "4.3 jours", "↓ 0.5")
with col3:
st.metric("R²", "0.83", "↑ 0.02")
+with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""📊 Indicateurs de performance du modèle :
+
+ - Précision : pourcentage de prédictions correctes (±10% de marge)
+ - MAE (Mean Absolute Error) : erreur moyenne en jours
+ - R² : qualité d'ajustement du modèle (0 à 1)
+
+ Les flèches indiquent l'évolution par rapport au mois précédent :
+ ↑ : amélioration
+ ↓ : diminution"""
+ )
# Notes méthodologiques
with st.expander("📝 Notes méthodologiques"):
diff --git a/pages/Votre_docteur_en_ligne_v2.py b/pages/Votre_docteur_en_ligne_v2.py
index 65304c0..f13b7df 100644
--- a/pages/Votre_docteur_en_ligne_v2.py
+++ b/pages/Votre_docteur_en_ligne_v2.py
@@ -11,8 +11,36 @@
from sqlalchemy_bigquery import BigQueryDialect
import time
+MAIN_COLOR = "#FF4B4B"
+
+# Style CSS personnalisé
+st.markdown("""
+
+""", unsafe_allow_html=True)
+
# Titre de la page
-st.title("Votre Docteur en Ligne V2 - Assistant SQL")
+st.markdown("Votre Docteur en Ligne V2 - Assistant SQL
", unsafe_allow_html=True)
try:
# Configuration Azure OpenAI
diff --git a/pages/Vue_globale.py b/pages/Vue_globale.py
index f32e3c6..535b640 100644
--- a/pages/Vue_globale.py
+++ b/pages/Vue_globale.py
@@ -192,7 +192,7 @@ def load_with_progress():
df_nbr_hospi, df_duree_hospi, df_tranche_age_hospi, df_capacite_hospi, df_complet, main_metrics = load_with_progress()
# Titre principal avec style amélioré
-st.markdown("🏥 Analyse hospitalière en France (2018-2022)
", unsafe_allow_html=True)
+st.markdown("🏥 Analyse hospitalière en France (2018-2022)
", unsafe_allow_html=True)
# Suite du code uniquement si les données sont chargées correctement
if df_nbr_hospi is not None:
@@ -392,9 +392,7 @@ def load_with_progress():
help="Nombre de lits perdus entre 2018 et 2022 et pourcentage de diminution"
)
- # Tendances temporelles avec tooltips améliorés
- col1, col2 = st.columns(2)
-
+
# Préparation des données
hospi_by_year = df_nbr_hospi.groupby('year')['nbr_hospi'].sum().reset_index()
duree_by_year = df_duree_hospi.groupby('year')['AVG_duree_hospi'].mean().reset_index()
@@ -464,7 +462,11 @@ def load_with_progress():
)
# Affichage du graphique
- st.plotly_chart(fig, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help="Ce graphique combine le nombre total d'hospitalisations (barres bleues) et la durée moyenne de séjour (ligne verte) par année. Passez votre souris sur les éléments du graphique pour voir les détails.")
# Analyse Géographique
with tab2:
@@ -497,7 +499,11 @@ def load_with_progress():
marker_color=MAIN_COLOR
)
fig.update_layout(height=600, template='plotly_white')
- st.plotly_chart(fig, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help=f"Ce graphique montre le nombre total d'hospitalisations par {territory_label}. Les barres sont triées par ordre croissant.")
with col2:
duree_by_territory = df_duree_hospi_filtered.groupby(territory_col)['AVG_duree_hospi'].mean().reset_index()
@@ -515,7 +521,11 @@ def load_with_progress():
marker_color=MAIN_COLOR
)
fig.update_layout(height=600, template='plotly_white')
- st.plotly_chart(fig, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help=f"Ce graphique présente la durée moyenne des séjours hospitaliers par {territory_label}. Les barres sont triées par ordre croissant.")
# Pathologies
with tab3:
@@ -612,8 +622,12 @@ def load_with_progress():
fig.update_yaxes(title_text="Nombre d'hospitalisations", secondary_y=False)
fig.update_yaxes(title_text="Durée moyenne de séjour (jours)", secondary_y=True)
- st.plotly_chart(fig, use_container_width=True)
-
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help="Ce graphique montre la relation entre le nombre d'hospitalisations (barres) et la durée moyenne de séjour (ligne) pour les pathologies les plus fréquentes.")
+
# Graphique combiné (scatter plot)
# Fusion des données d'hospitalisation et de durée par année
combined_data = pd.merge(
@@ -676,8 +690,12 @@ def load_with_progress():
fig.layout.updatemenus[0].buttons[0].args[1]["frame"]["duration"] = 1500
fig.layout.updatemenus[0].buttons[0].args[1]["transition"]["duration"] = 500
- st.plotly_chart(fig, use_container_width=True)
-
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help="Ce graphique animé montre l'évolution de la relation entre le nombre d'hospitalisations et la durée moyenne de séjour pour chaque pathologie au fil des années. La taille des bulles représente le nombre d'hospitalisations.")
+
# Graphique 3D
# Fusion des données avec les trois métriques
combined_data_3d = pd.merge(
@@ -899,7 +917,11 @@ def load_with_progress():
)
# Affichage du graphique
- st.plotly_chart(fig, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help="Ce graphique 3D montre la distribution des hospitalisations par pathologie, durée moyenne de séjour et indice comparatif. Utilisez les contrôles pour faire pivoter et zoomer sur le graphique.")
# Tableau récapitulatif détaillé
st.subheader("Évolution des pathologies (2018-2022)")
@@ -1055,7 +1077,11 @@ def load_with_progress():
marker_color=MAIN_COLOR
)
fig.update_layout(height=500, template='plotly_white')
- st.plotly_chart(fig, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help="Ce graphique montre la distribution des hospitalisations par tranche d'âge. Les barres représentent le taux d'hospitalisation pour chaque groupe d'âge.")
with col2:
st.subheader(" Évolution des taux")
@@ -1094,8 +1120,12 @@ def load_with_progress():
hovermode='x unified',
template='plotly_white'
)
- st.plotly_chart(fig, use_container_width=True)
-
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help="Ce graphique montre l'évolution des taux d'hospitalisation au fil du temps. Il permet de comparer les tendances entre différentes régions ou services.")
+
# Analyse régionale par tranche d'âge
st.subheader(" Analyse territoriale par tranche d'âge")
@@ -1126,8 +1156,12 @@ def load_with_progress():
marker_color=MAIN_COLOR
)
fig.update_layout(height=500, template='plotly_white')
- st.plotly_chart(fig, use_container_width=True)
-
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help="Ce graphique montre la distribution des hospitalisations par tranche d'âge pour le territoire sélectionné.")
+
# Affichage des indicateurs clés
col1, col2, col3 = st.columns(3)
with col1:
@@ -1248,8 +1282,12 @@ def prepare_age_data():
)
fig_pie.update_traces(textposition='inside', textinfo='percent+label')
fig_pie.update_layout(template='plotly_white')
- st.plotly_chart(fig_pie, use_container_width=True)
-
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig_pie, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help=f"Ce graphique circulaire montre la répartition des hospitalisations entre les différents services médicaux pour l'année {selected_year}.")
+
# Évolution temporelle par service
df_evolution = df_service.groupby(['annee', 'classification'])['nbr_hospi'].sum().reset_index()
@@ -1262,8 +1300,12 @@ def prepare_age_data():
labels={'annee': 'Année', 'nbr_hospi': 'Nombre d\'hospitalisations', 'classification': 'Service'}
)
fig_evolution.update_layout(template='plotly_white')
- st.plotly_chart(fig_evolution, use_container_width=True)
-
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig_evolution, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help="Ce graphique montre l'évolution du nombre d'hospitalisations pour chaque service médical au fil du temps.")
+
# Heatmap des services par tranche d'âge
age_columns = [col for col in df_service.columns if col.startswith('tranche_age_')]
@@ -1286,10 +1328,14 @@ def prepare_age_data():
z='pourcentage',
title='Distribution des tranches d\'âge par service médical',
labels={'tranche_age': 'Tranche d\'âge', 'classification': 'Service', 'pourcentage': 'Pourcentage'},
- color_continuous_scale='Viridis'
+ color_continuous_scale='redor'
)
fig_heatmap.update_layout(xaxis_tickangle=-45, template='plotly_white')
- st.plotly_chart(fig_heatmap, use_container_width=True)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig_heatmap, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help="Cette heatmap montre la distribution des tranches d'âge pour chaque service médical. Les couleurs plus foncées indiquent une plus forte concentration.")
# Création d'une visualisation 3D plus pertinente
st.subheader("Évolution des services médicaux dans le temps")
@@ -1347,8 +1393,12 @@ def prepare_age_data():
)
# Affichage du graphique
- st.plotly_chart(fig_3d, use_container_width=True)
-
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st.plotly_chart(fig_3d, use_container_width=True)
+ with col_help:
+ st.metric(label="", value="", help="Ce graphique 3D montre la distribution des hospitalisations par service, année et région. Utilisez les contrôles pour faire pivoter et zoomer sur le graphique.")
+
# Tableau récapitulatif simplifié
st.subheader("Résumé par service médical")
df_summary = df_service_filtered.groupby('classification').agg({
diff --git a/pages/carte_de_france.py b/pages/carte_de_france.py
index d48f39d..a025f28 100644
--- a/pages/carte_de_france.py
+++ b/pages/carte_de_france.py
@@ -36,7 +36,7 @@
""", unsafe_allow_html=True)
# Titre principal
-st.markdown("🌍 Carte de France des hospitalisations
", unsafe_allow_html=True)
+st.markdown("🌍 Carte de France des hospitalisations
", unsafe_allow_html=True)
# Fonction de chargement des données
@st.cache_resource
@@ -192,7 +192,27 @@ def show_map(df_filtered, niveau_administratif, selected_service, sexe, annee):
m = generate_map(map_data, geojson_data, niveau_administratif, filtered_df, sexe, annee, selected_service)
# Afficher la carte
- st_folium(m, width=1200, height=800)
+ col_chart, col_help = st.columns([1, 0.01])
+ with col_chart:
+ st_folium(m, width=1200, height=800)
+ with col_help:
+ st.metric(
+ label="",
+ value="",
+ help="""Cette carte interactive vous permet de visualiser la distribution des hospitalisations en France.
+
+ 🔍 Navigation :
+ - Zoomez avec la molette de la souris
+ - Cliquez et faites glisser pour vous déplacer
+ - Survolez une région pour voir les détails
+
+ 📊 Informations affichées :
+ - Nombre total d'hospitalisations
+ - Durée moyenne de séjour
+ - Top pathologies par territoire
+
+ 🎨 Les couleurs plus foncées indiquent un nombre plus élevé d'hospitalisations."""
+ )
# Chargement des données
df = load_data()