Module visualization

Modules d’analyse et génération de graphiques interactifs Plotly.

Guide utilisateur : voir Utilisation pour description détaillée des 4 analyses.

visualization.analyse_trendlines_v2

Analyse des tendances temporelles (1999-2018).

Métriques Analysées

  • Volume d’interactions

  • Durée de préparation (moyenne, médiane)

  • Complexité des recettes

  • Nombre d’ingrédients

  • Profils nutritionnels

  • Tags populaires

Insights Clés

  • Boom 2008-2018 : +350% volume interactions

  • Simplification : Recettes plus rapides (-15% temps préparation)

  • Santé : Réduction calories, hausse tags végétariens/healthy

  • Complexité : Score +12% sur 20 ans

  • Ingrédients : Stable ~9 ingrédients par recette

Visualisations Générées

  • 6 graphiques temporels synchronisés (subplots)

  • Tendances avec régression linéaire (R² affichés)

  • Annotations des insights majeurs

  • Zoom interactif Plotly avec rangeselector

Exemple d’Utilisation

from visualization import analyse_trendlines_v2
from data.cached_loaders import get_recipes_clean

# Charger données
recipes = get_recipes_clean()

# Afficher analyse complète
analyse_trendlines_v2.render_trendlines_analysis()

# L'analyse génère automatiquement:
# - Widgets sélection temporelle (slider années)
# - 6 graphiques tendances
# - Métriques statistiques (R², p-values)

visualization.analyse_seasonality

Analyse des patterns saisonniers.

Métriques Analysées

  • Distribution par saison

  • Variations mensuelles

  • Pics saisonniers d’activité

  • Catégories de recettes par saison

Insights Clés

  • Hiver : Pics calories (+12%), recettes réconfort

  • Été : Recettes légères, salades, BBQ

  • Décembre : Pic absolu (+45% vs moyenne annuelle)

  • Automne : +18% recettes vs été

  • Patterns stables : Reproduction annuelle prévisible

Visualisations Générées

  • Histogrammes saisonniers avec palette thématique (orange/bleu/vert/rouge)

  • Heatmaps mensuelles (12 mois × métriques nutritionnelles)

  • Distribution nutritionnelle par saison

  • Codage couleur automatique par saison

Exemple d’Utilisation

from visualization import analyse_seasonality
from data.cached_loaders import get_recipes_clean

# Charger données
recipes = get_recipes_clean()

# Afficher analyse saisonnière
analyse_seasonality.render_seasonality_analysis()

# L'analyse génère:
# - Sélecteur saison (Automne, Hiver, Printemps, Été)
# - Graphiques distribution saisonnière
# - Heatmap mensuelle interactive
# - Statistiques par saison

visualization.analyse_weekend

Analyse de l’effet jour de la semaine vs weekend.

Métriques Analysées

  • Comparaison jours ouvrés vs weekend

  • Variations de complexité

  • Impact sur types de recettes

Insights Clés

  • Lundi = champion : +45% publications vs moyenne hebdomadaire

  • Samedi = creux : -49% publications (le plus bas)

  • Durée/complexité : Aucune différence significative semaine vs weekend

  • Conclusion : Moment publication ≠ type recette

  • Effet psychologique : Planification début semaine

Visualisations Générées

  • 3 panels comparatifs (volume, distribution, écarts à la moyenne)

  • Tests statistiques Chi-2 avec p-values affichées

  • Barres bicolores semaine (bleu) vs weekend (orange)

  • Écarts à la moyenne en pourcentage

Exemple d’Utilisation

from visualization import analyse_weekend
from data.cached_loaders import get_recipes_clean

# Charger données
recipes = get_recipes_clean()

# Afficher analyse weekend
analyse_weekend.render_weekend_analysis()

# L'analyse génère:
# - Comparaison jour par jour (7 jours)
# - Tests statistiques Chi-2
# - Distribution complexité/durée
# - Insights sur effet jour semaine

visualization.analyse_ratings

Analyse des notes utilisateurs.

Métriques Analysées

  • Distribution des notes (0-5 étoiles)

  • Statistiques agrégées

  • Corrélations avec caractéristiques

  • Analyse des outliers

Insights Clés

  • Biais positif massif : 78% notes = 5 étoiles

  • Moyenne : 4.63/5 (distribution asymétrique)

  • Notes basses rares : <2% notes ≤ 2 étoiles

  • Corrélations faibles : Complexité/temps ≠ note

  • Effet auto-sélection : Utilisateurs satisfaits notent

Visualisations Générées

  • Histogrammes interactifs avec hover détails

  • Distribution avec courbe de densité

  • Métriques satisfaction (moyenne, médiane, mode)

  • Boxplots par tranche de rating

Exemple d’Utilisation

from visualization import analyse_ratings
from data.cached_loaders import get_ratings_longterm

# Charger ratings
ratings = get_ratings_longterm()

# Afficher analyse ratings
analyse_ratings.render_ratings_analysis()

# L'analyse génère:
# - Distribution complète 0-5 étoiles
# - Statistiques descriptives
# - Corrélations avec attributs recettes
# - Identification outliers

visualization.analyse_ratings_simple

Version simplifiée de l’analyse des ratings.

mangetamain_analytics.visualization.analyse_ratings_simple.setup_s3_connection()[source]

Configure la connexion S3 pour DuckDB

mangetamain_analytics.visualization.analyse_ratings_simple.get_ratings_data()[source]

Récupère les données depuis le Parquet S3

mangetamain_analytics.visualization.analyse_ratings_simple.process_data(ratings_data)[source]

Traite les données pour l’analyse

mangetamain_analytics.visualization.analyse_ratings_simple.create_plots_streamlit(ratings_data, stats) None[source]

Crée les graphiques pour Streamlit

mangetamain_analytics.visualization.analyse_ratings_simple.create_plots_matplotlib(ratings_data, stats) None[source]

Crée les graphiques avec matplotlib (mode standalone)

mangetamain_analytics.visualization.analyse_ratings_simple.print_stats(stats) None[source]

Affiche les statistiques en mode console

mangetamain_analytics.visualization.analyse_ratings_simple.print_interpretation() None[source]

Affiche l’interprétation

mangetamain_analytics.visualization.analyse_ratings_simple.render_analysis(conn=None) None[source]

Fonction principale pour Streamlit

Paramètres:

conn – Connexion DuckDB (ignorée, on utilise S3 directement)

mangetamain_analytics.visualization.analyse_ratings_simple.main() None[source]

Fonction principale pour exécution standalone

visualization.analyse_trendlines

Version initiale de l’analyse des tendances.

visualization.custom_charts

Fonctions utilitaires pour créer des graphiques réutilisables.

Module pour les graphiques personnalisés.

mangetamain_analytics.visualization.custom_charts.create_correlation_heatmap(conn, table_name: str) None[source]

Crée une heatmap de corrélation.

mangetamain_analytics.visualization.custom_charts.create_distribution_plot(conn, table_name: str, column_name: str) None[source]

Crée un graphique de distribution.

mangetamain_analytics.visualization.custom_charts.create_time_series_plot(conn, table_name: str, date_col: str, value_col: str) None[source]

Crée un graphique temporel.

mangetamain_analytics.visualization.custom_charts.create_custom_scatter_plot(conn, table_name: str, x_col: str, y_col: str, color_col: str | None = None) None[source]

Crée un graphique en nuage de points personnalisé.

visualization.plotly_config

Configuration Plotly pour l’application.

Configuration centralisée pour les graphiques Plotly.

Ce module définit les styles, couleurs et configurations réutilisables pour tous les graphiques de l’application.

mangetamain_analytics.visualization.plotly_config.apply_theme(fig: Any, title: str | None = None, height: int = 600, add_grids: bool = False) Any[source]

Applique le thème blanc cohérent à un graphique Plotly.

Paramètres:
  • fig – Figure Plotly à styliser

  • title – Titre optionnel du graphique

  • height – Hauteur du graphique en pixels

  • add_grids – Si True, ajoute les grilles aux axes (défaut: False) Pour les subplots, il vaut mieux configurer les grilles directement dans le code de la fonction

Renvoie:

Figure Plotly avec thème appliqué

Exemple

>>> fig = go.Figure()
>>> fig.add_trace(go.Scatter(x=[1,2,3], y=[4,5,6]))
>>> fig = apply_theme(fig, title="Mon graphique", height=500)