Module visualization

Analysis and interactive Plotly chart generation modules.

User guide: see Usage for detailed description of the 4 analyses.

visualization.analyse_trendlines_v2

Temporal trend analysis (1999-2018).

Analyzed Metrics

  • Interaction volume

  • Preparation time (mean, median)

  • Recipe complexity

  • Number of ingredients

  • Nutritional profiles

  • Popular tags

Key Insights

  • 2008-2018 Boom: +350% interaction volume

  • Simplification: Faster recipes (-15% preparation time)

  • Health: Reduced calories, increased vegetarian/healthy tags

  • Complexity: +12% score over 20 years

  • Ingredients: Stable ~9 ingredients per recipe

Generated Visualizations

  • 6 synchronized temporal charts (subplots)

  • Trends with linear regression (R² displayed)

  • Major insights annotations

  • Interactive Plotly zoom with rangeselector

Usage Example

from visualization import analyse_trendlines_v2
from data.cached_loaders import get_recipes_clean

# Load data
recipes = get_recipes_clean()

# Display complete analysis
analyse_trendlines_v2.render_trendlines_analysis()

# The analysis automatically generates:
# - Temporal selection widgets (year slider)
# - 6 trend charts
# - Statistical metrics (R², p-values)

visualization.analyse_seasonality

Seasonal pattern analysis.

Analyzed Metrics

  • Distribution by season

  • Monthly variations

  • Seasonal activity peaks

  • Recipe categories by season

Key Insights

  • Winter: Calorie peaks (+12%), comfort recipes

  • Summer: Light recipes, salads, BBQ

  • December: Absolute peak (+45% vs annual average)

  • Autumn: +18% recipes vs summer

  • Stable patterns: Predictable annual reproduction

Generated Visualizations

  • Seasonal histograms with thematic palette (orange/blue/green/red)

  • Monthly heatmaps (12 months × nutritional metrics)

  • Nutritional distribution by season

  • Automatic color coding by season

Usage Example

from visualization import analyse_seasonality
from data.cached_loaders import get_recipes_clean

# Load data
recipes = get_recipes_clean()

# Display seasonal analysis
analyse_seasonality.render_seasonality_analysis()

# The analysis generates:
# - Season selector (Autumn, Winter, Spring, Summer)
# - Seasonal distribution charts
# - Interactive monthly heatmap
# - Statistics by season

visualization.analyse_weekend

Day of week vs weekend effect analysis.

Analyzed Metrics

  • Weekday vs weekend comparison

  • Complexity variations

  • Impact on recipe types

Key Insights

  • Monday = champion: +45% publications vs weekly average

  • Saturday = low point: -49% publications (lowest)

  • Duration/complexity: No significant difference weekday vs weekend

  • Conclusion: Publication timing ≠ recipe type

  • Psychological effect: Planning at week start

Generated Visualizations

  • 3 comparative panels (volume, distribution, deviations from mean)

  • Chi-2 statistical tests with displayed p-values

  • Two-color bars weekday (blue) vs weekend (orange)

  • Deviations from mean in percentage

Usage Example

from visualization import analyse_weekend
from data.cached_loaders import get_recipes_clean

# Load data
recipes = get_recipes_clean()

# Display weekend analysis
analyse_weekend.render_weekend_analysis()

# The analysis generates:
# - Day by day comparison (7 days)
# - Chi-2 statistical tests
# - Complexity/duration distribution
# - Insights on day of week effect

visualization.analyse_ratings

User ratings analysis.

Analyzed Metrics

  • Rating distribution (0-5 stars)

  • Aggregated statistics

  • Correlations with characteristics

  • Outlier analysis

Key Insights

  • Massive positive bias: 78% ratings = 5 stars

  • Average: 4.63/5 (asymmetric distribution)

  • Rare low ratings: <2% ratings ≤ 2 stars

  • Weak correlations: Complexity/time ≠ rating

  • Self-selection effect: Satisfied users rate

Generated Visualizations

  • Interactive histograms with hover details

  • Distribution with density curve

  • Satisfaction metrics (mean, median, mode)

  • Boxplots by rating range

Usage Example

from visualization import analyse_ratings
from data.cached_loaders import get_ratings_longterm

# Load ratings
ratings = get_ratings_longterm()

# Display ratings analysis
analyse_ratings.render_ratings_analysis()

# The analysis generates:
# - Complete 0-5 stars distribution
# - Descriptive statistics
# - Correlations with recipe attributes
# - Outlier identification

visualization.analyse_ratings_simple

Simplified version of ratings analysis.

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

Initial version of trend analysis.

visualization.custom_charts

Utility functions for creating reusable charts.

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

Plotly configuration for the 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)