Visualisation de Données

Formation en R

Pourquoi Visualiser les Données ?

Les Mêmes Données, Trois Façons

Écart moyen de TVA par industrie :

Sous forme de Tableau :

industry avg_gap
Retail 8209
Services 12158
Manufacturing 8861
Technology 17238

Sous forme de Chiffres :

min mean max
-84038 11411 125974

Laquelle raconte l’histoire instantanément ?

Les Mêmes Données sous forme de Graphique

Maintenant nous voyons instantanément : La manufacture a l’écart moyen le plus élevé !

Pourquoi Visualiser ?

Pour l’administration fiscale :

  1. Repérer rapidement les tendances - tendances de conformité, valeurs aberrantes, effets saisonniers
  2. Communiquer aux parties prenantes - ministres, directeurs, agents de terrain
  3. Soutenir les décisions - quels secteurs auditer ? Où concentrer les ressources ?
  4. Créer la confiance - représentation transparente et honnête des données

Note

Une bonne visualisation répond à une question immédiatement

Principes d’une Visualisation Efficace

Trois règles :

  1. Montrer les données, pas la décoration - supprimer les éléments inutiles
  2. Rendre les tendances évidentes - utiliser les types de graphiques appropriés
  3. Être honnête - ne pas induire en erreur avec l’échelle ou la distorsion

❌ Mauvais : - Graphiques 3D - Couleurs arc-en-ciel sans signification - Tri alphabétique

✓ Bon : - Graphiques simples et clairs - Couleurs significatives - Tri par valeur

Choisir le Bon Graphique

Source : ActiveWizards

Focus d’aujourd’hui : Graphiques à barres, graphiques linéaires, nuages de points

La Grammaire des Graphiques

Qu’est-ce qui Rend ggplot2 Différent ?

La plupart des outils : “Fais-moi un graphique à barres”

ggplot2 : Construire des graphiques couche par couche avec une grammaire systématique

Note

Si vous comprenez la grammaire, vous pouvez créer N’IMPORTE QUEL graphique

Trois composants essentiels :

  1. Données - quel jeu de données ?
  2. Esthétiques - mapper les variables aux propriétés visuelles (x, y, couleur)
  3. Géométrie - quelles formes ? (barres, points, lignes)

Le Modèle ggplot2

Chaque graphique suit ce modèle :

ggplot(data = <DATA>, aes(x = <VAR1>, y = <VAR2>)) +
  geom_<TYPE>()

Exemple :

ggplot(data = vat_gap_analysis, aes(x = industry, y = vat_gap)) +
  geom_bar(stat = "identity")

Important

Notez le + à la fin de la première ligne - cela connecte les couches ensemble !

Construire un Graphique : Étape par Étape

Étape 1 : Indiquer à ggplot quelles données

ggplot(data = vat_gap_analysis)

Boîte grise vide - ggplot est prêt mais ne sait pas quoi tracer

Construire un Graphique : Ajouter les Esthétiques

Étape 2 : Mapper les variables à x et y

ggplot(data = vat_gap_analysis, aes(x = taxable_income, y = actual_vat))

Maintenant nous avons des axes, mais pas encore de données !

Construire un Graphique : Ajouter la Géométrie

Étape 3 : Ajouter des formes géométriques

ggplot(data = vat_gap_analysis, aes(x = taxable_income, y = actual_vat)) +
  geom_point()

Graphique complet ! 🎉

Comprendre les Esthétiques

Que Sont les Esthétiques ?

Les esthétiques mappent vos données aux propriétés visuelles

Trois esthétiques principales que vous utiliserez :

  1. x - position horizontale
  2. y - position verticale
  3. color - couleur des points/lignes/barres
# Mapper l'industrie à l'axe des x, l'écart de TVA à l'axe des y
aes(x = industry, y = vat_gap)

# Ajouter la couleur par taille d'entreprise
aes(x = industry, y = vat_gap, color = firm_size)

Position : x et y

Le fondement de chaque graphique :

ggplot(vat_gap_analysis, aes(x = expected_vat, y = actual_vat)) +
  geom_point() +
  theme_minimal()

La position indique : Quelle entreprise a quelles valeurs

Couleur : Ajouter une Troisième Dimension

La couleur peut montrer des catégories :

ggplot(vat_gap_analysis, aes(x = expected_vat, y = actual_vat, color = firm_size)) +
  geom_point() +
  theme_minimal()

Maintenant nous voyons : Les grandes entreprises (orange) se regroupent en haut à droite

Color vs Fill : Distinction Importante

Différents geoms utilisent différentes esthétiques :

color - pour les points et lignes :

ggplot(vat_gap_analysis[1:100], 
       aes(x = expected_vat, 
           y = actual_vat)) +
  geom_point(color = "darkblue") +
  theme_minimal()

Utilisez color pour geom_point() et geom_line()

fill - pour les barres et zones :

firm_counts <- vat_gap_analysis[, .N, by = firm_size]

ggplot(firm_counts, 
       aes(x = firm_size, y = N)) +
  geom_bar(stat = "identity",
           fill = "darkblue") +
  theme_minimal()

Utilisez fill pour geom_bar() et formes similaires

Color ET Fill Ensemble

Les barres peuvent avoir à la fois fill (intérieur) et color (bordure) :

ggplot(firm_counts, aes(x = firm_size, y = N)) +
  geom_bar(stat = "identity", 
           fill = "lightblue",      # Couleur intérieure
           color = "darkblue",      # Couleur de bordure
           linewidth = 1) +
  theme_minimal() +
  labs(title = "Fill = intérieur, Color = bordure")

Astuce

Règle rapide : Les points utilisent color, les barres utilisent fill

La Règle aes() : Variables vs Valeurs Fixes

Les variables vont dans aes(), les valeurs fixes vont à l’extérieur :

# ✓ CORRECT : colorer par une variable dans vos données
ggplot(data, aes(x = var1, y = var2, color = firm_size))

# ✓ CORRECT : rendre tous les points bleus
ggplot(data, aes(x = var1, y = var2)) +
  geom_point(color = "blue")

# ❌ FAUX : "blue" n'est pas un nom de variable
ggplot(data, aes(x = var1, y = var2, color = "blue"))

Important

Si c’est dans vos données → utilisez aes()
Si c’est un choix fixe → à l’extérieur de aes()

Pratique : Qu’est-ce qui ne va pas ici ?

# Graphique A
ggplot(vat_data, aes(x = income, y = vat, color = "red"))

# Graphique B  
ggplot(vat_data, aes(x = income, y = vat)) +
  geom_point(color = industry)

# Graphique C
ggplot(vat_data, aes(x = income, y = vat, color = industry))

Réponse : Seul C est correct !

  • Graphique A : “red” devrait être à l’extérieur de aes()
  • Graphique B : industry devrait être à l’intérieur de aes()

Graphiques à Barres

Graphiques à Barres : Quand les Utiliser

Meilleur pour : Comparer des valeurs entre catégories

En administration fiscale : - Total de TVA par industrie - Nombre d’audits par région - Taux de conformité par secteur

# Modèle : variable catégorielle sur x, numérique sur y
ggplot(data, aes(x = category, y = value)) +
  geom_bar(stat = "identity")

Graphique à Barres : Exemple de Base

# Calculer le total de TVA par industrie
industry_vat <- vat_gap_analysis[, .(total_vat = sum(actual_vat)), by = industry]

ggplot(industry_vat, aes(x = industry, y = total_vat)) +
  geom_bar(stat = "identity")

Problème : Étiquettes verticales difficiles à lire

Graphique à Barres : Le Rendre Horizontal

ggplot(industry_vat, aes(x = industry, y = total_vat)) +
  geom_bar(stat = "identity") +
  coord_flip()

Beaucoup mieux ! coord_flip() fait pivoter le graphique

Graphique à Barres : Trier par Valeur

ggplot(industry_vat, aes(x = reorder(industry, total_vat), y = total_vat)) +
  geom_bar(stat = "identity") +
  coord_flip()

reorder(industry, total_vat) trie les industries par montant de TVA

Graphique à Barres : Ajouter Couleur et Étiquettes

ggplot(industry_vat, aes(x = reorder(industry, total_vat), y = total_vat)) +
  geom_bar(stat = "identity", fill = "#3B9AB2") +
  coord_flip() +
  labs(
    title = "Collecte Totale de TVA par Industrie",
    x = NULL,
    y = "TVA Totale (USD)"
  ) +
  theme_minimal()

Exercice 1 : Graphique à Barres Groupées

10:00

Tâche : Créer un graphique à barres groupées montrant la collecte de TVA par industrie et taille d’entreprise

Étapes :

  1. Agréger les données : total actual_vat par industry ET firm_size
  2. Créer un graphique à barres avec industry sur l’axe des x, total_vat sur l’axe des y
  3. Utiliser fill = firm_size pour colorer les barres par taille d’entreprise
  4. Ajouter position = "dodge" pour placer les barres côte à côte
  5. Rendre horizontal avec coord_flip()
  6. Ajouter des étiquettes appropriées et theme_minimal()

Question : Quelle combinaison (industrie + taille d’entreprise) collecte le plus de TVA ?

Barres Groupées : Comparer Plusieurs Catégories

Quand vous avez DEUX variables catégorielles :

# TVA par industrie et taille d'entreprise
industry_size <- vat_gap_analysis[, .(total_vat = sum(actual_vat)/1e6), 
                                   by = .(industry, firm_size)]

Créer des barres côte à côte avec position = "dodge" :

ggplot(industry_size, aes(x = industry, y = total_vat, fill = firm_size)) +
  geom_bar(stat = "identity", position = "dodge") +
  coord_flip() +
  labs(
    title = "Collecte de TVA par Industrie et Taille d'Entreprise",
    x = NULL,
    y = "TVA Totale (Millions USD)",
    fill = "Taille d'Entreprise"
  ) +
  theme_minimal()

Barres Empilées : Montrer la Composition

Montrer le total ET la répartition avec des barres empilées :

ggplot(industry_size, aes(x = reorder(industry, total_vat), y = total_vat, fill = firm_size)) +
  geom_bar(stat = "identity", position = "stack") +  # position = "stack" est par défaut
  coord_flip() +
  labs(
    title = "Collecte de TVA par Industrie (par Taille d'Entreprise)",
    x = NULL,
    y = "TVA Totale (Millions USD)",
    fill = "Taille d'Entreprise"
  ) +
  scale_fill_brewer(palette = "Set2") +
  theme_minimal()

Chaque barre montre le total, les couleurs montrent la contribution de chaque taille d’entreprise

Groupées vs Empilées : Quand les Utiliser

Utilisez les Barres Groupées quand :

  • Comparer des valeurs entre groupes
  • Voir clairement les valeurs individuelles
  • Avoir 2-4 catégories par groupe

Exemple : Comparer petites vs grandes entreprises entre industries

Utilisez les Barres Empilées quand :

  • Montrer le total ET la composition
  • Intéressé par les proportions
  • Voir l’effet cumulatif

Exemple : TVA totale avec répartition par taille d’entreprise

Avertissement

Évitez l’empilement pour comparer des valeurs - difficile de lire les segments du milieu/haut !

Nuages de Points

Nuages de Points : Quand les Utiliser

Meilleur pour : Montrer les relations entre deux variables continues

En administration fiscale : - TVA attendue vs réelle (conformité) - Taille d’entreprise vs obligation fiscale - Inputs vs outputs

# Modèle : deux variables numériques
ggplot(data, aes(x = numeric_var1, y = numeric_var2)) +
  geom_point()

Nuage de Points : Exemple de Base

ggplot(vat_gap_analysis, aes(x = expected_vat, y = actual_vat)) +
  geom_point()

Montre la relation entre TVA attendue et réelle

Nuage de Points : Ajouter la Couleur par Groupes

ggplot(vat_gap_analysis, aes(x = expected_vat, y = actual_vat, color = firm_size)) +
  geom_point() +
  theme_minimal()

Maintenant nous voyons : Le modèle diffère selon la taille d’entreprise

Nuage de Points : Ajouter une Ligne de Référence

ggplot(vat_gap_analysis, aes(x = expected_vat, y = actual_vat)) +
  geom_point() +
  geom_abline(intercept = 0, slope = 1, color = "red", linetype = "dashed") +
  theme_minimal()

La ligne rouge montre la conformité parfaite (réel = attendu)

Nuage de Points : Ajouter une Ligne de Tendance

ggplot(vat_gap_analysis, aes(x = expected_vat, y = actual_vat)) +
  geom_point(color = "gray") +
  geom_smooth(method = "lm", color = "blue") +
  theme_minimal()

geom_smooth(method = "lm") ajoute une ligne de tendance linéaire

Nuage de Points : Version Professionnelle

ggplot(vat_gap_analysis, aes(x = expected_vat, y = actual_vat)) +
  geom_point(aes(color = firm_size)) +
  geom_smooth(method = "lm", color = "black") +
  labs(
    title = "Conformité TVA : Réel vs Attendu",
    x = "TVA Attendue (USD)",
    y = "TVA Réelle (USD)",
    color = "Taille d'Entreprise"
  ) +
  theme_minimal()

Exercice 2 : Nuage de Points

08:00

Tâche : Créer un nuage de points des inputs TVA vs outputs

Étapes :

  1. Utiliser le jeu de données vat_gap_analysis
  2. Mapper vat_inputs à l’axe des x, vat_outputs à l’axe des y
  3. Ajouter geom_point() avec couleur par industry
  4. Ajouter une ligne de référence : geom_abline(intercept = 0, slope = 1)
  5. Ajouter des étiquettes appropriées

Question : Que représente la ligne de référence ?

Graphiques Linéaires

Graphiques Linéaires : Quand les Utiliser

Meilleur pour : Montrer les tendances dans le temps

En administration fiscale : - Collecte mensuelle de TVA - Taux de conformité au fil des années - Tendances trimestrielles par secteur

# Modèle : temps sur l'axe des x, valeur sur l'axe des y
ggplot(data, aes(x = year, y = value)) +
  geom_line()

Graphique Linéaire : Tendance Temporelle de Base

# Agréger par année
vat_by_year <- vat_gap_analysis[, .(total_vat = sum(actual_vat)/1e6), by = year]

ggplot(vat_by_year, aes(x = year, y = total_vat)) +
  geom_line() +
  geom_point()

Meilleure pratique : Ajouter geom_point() pour montrer les points de données réels

Graphique Linéaire : Groupes Multiples

# Agréger par année et taille d'entreprise
vat_by_year_size <- vat_gap_analysis[, .(total_vat = sum(actual_vat)/1e6), 
                                      by = .(year, firm_size)]

ggplot(vat_by_year_size, aes(x = year, y = total_vat, color = firm_size)) +
  geom_line() +
  geom_point()

La couleur crée automatiquement des lignes séparées pour chaque groupe !

Graphique Linéaire : Version Professionnelle

ggplot(vat_by_year_size, aes(x = year, y = total_vat, color = firm_size)) +
  geom_line() +
  geom_point() +
  labs(
    title = "Tendances de Collecte de TVA par Taille d'Entreprise",
    x = "Année",
    y = "TVA Totale (Millions USD)",
    color = "Taille d'Entreprise"
  ) +
  theme_minimal()

Exercice 3 : Graphique Linéaire

08:00

Tâche : Créer un graphique linéaire montrant l’écart moyen de TVA dans le temps

Étapes :

  1. Agréger les données : calculer l’écart moyen vat_gap par year
  2. Créer un graphique linéaire avec geom_line() et geom_point()
  3. Mapper year à l’axe des x, écart moyen à l’axe des y
  4. Ajouter un titre et des étiquettes appropriés
  5. Utiliser theme_minimal()

Question : L’écart de TVA augmente-t-il ou diminue-t-il ?

Facettage

Facettage : Petits Multiples

Quand vous avez beaucoup de catégories, le facettage est meilleur que la couleur :

# Au lieu d'entasser tout dans un graphique avec beaucoup de couleurs...
ggplot(data, aes(x = var1, y = var2, color = category))  # encombré !

# Créer des panneaux séparés pour chaque catégorie
ggplot(data, aes(x = var1, y = var2)) +
  geom_point() +
  facet_wrap(~ category)  # clair !

Facettage : Exemple de Base

ggplot(vat_gap_analysis, aes(x = expected_vat, y = actual_vat)) +
  geom_point() +
  facet_wrap(~ industry) +
  theme_minimal()

Chaque industrie obtient son propre panneau - beaucoup plus clair !

Facettage : Contrôler la Mise en Page

ggplot(vat_gap_analysis, aes(x = vat_gap)) +
  geom_histogram(bins = 30, fill = "#3B9AB2") +
  facet_wrap(~ firm_size, ncol = 3) +
  theme_minimal()

ncol = 3 contrôle le nombre de colonnes

Facettage : Quand l’Utiliser

Utilisez le facettage quand :

  • Vous avez beaucoup de catégories (>3-4)
  • Les catégories se chevauchent trop avec la couleur
  • Vous voulez comparer les modèles entre groupes

Syntaxe :

facet_wrap(~ variable)        # Une variable de regroupement
facet_wrap(~ var1 + var2)     # Deux variables (crée beaucoup de panneaux !)

Exercice 4 : Graphique Facetté

10:00

Tâche : Créer des nuages de points facettés par industrie

Étapes :

  1. Créer un nuage de points : taxable_income vs actual_vat
  2. Ajouter geom_point()
  3. Ajouter facet_wrap(~ industry)
  4. Ajouter une ligne de tendance avec geom_smooth(method = "lm")
  5. Ajouter des étiquettes appropriées et un thème

Finitions Professionnelles

Étiquettes : Rendre Professionnel

Toujours inclure :

  • Titre informatif
  • Étiquettes d’axes avec unités
  • Source des données
ggplot(vat_gap_analysis[1:100], aes(x = expected_vat/1000, y = actual_vat/1000)) +
  geom_point(aes(color = firm_size)) +
  labs(
    title = "Conformité TVA par Taille d'Entreprise",
    subtitle = "Exercices Fiscaux 2021-2023",
    x = "TVA Attendue (Milliers USD)",
    y = "TVA Réelle (Milliers USD)",
    color = "Taille d'Entreprise",
    caption = "Source : Base de Données de l'Administration Fiscale"
  ) +
  theme_minimal()

Thèmes : Apparence Épurée

Thème recommandé pour les rapports :

ggplot(industry_vat, aes(x = reorder(industry, total_vat), y = total_vat)) +
  geom_bar(stat = "identity", fill = "#3B9AB2") +
  coord_flip() +
  labs(title = "TVA par Industrie", x = NULL, y = "TVA Totale") +
  theme_minimal()

theme_minimal() donne un aspect épuré et moderne

Couleurs : Utiliser des Palettes Professionnelles

ggplot(vat_gap_analysis[1:100], aes(x = taxable_income, y = actual_vat, color = firm_size)) +
  geom_point() +
  scale_color_brewer(palette = "Set2") +  # Professionnel, adapté aux daltoniens
  theme_minimal()

Palettes ColorBrewer : “Set1”, “Set2”, “Dark2” sont de bons choix par défaut

Sauvegarder Votre Travail

# D'abord, créer et sauvegarder le graphique dans un objet
my_plot <- ggplot(vat_gap_analysis, aes(x = expected_vat, y = actual_vat)) +
  geom_point() +
  theme_minimal()

# Sauvegarder en PNG pour les présentations
ggsave(
  filename = "vat_compliance.png",
  plot = my_plot,
  width = 10,
  height = 6,
  dpi = 300
)

# Sauvegarder en PDF pour les rapports
ggsave("vat_compliance.pdf", plot = my_plot, width = 10, height = 6)

Liste de Vérification des Meilleures Pratiques

Avant de partager toute visualisation :

  • ✓ Titre clair et descriptif
  • ✓ Étiquettes d’axes avec unités (USD, %, compte, etc.)
  • ✓ Type de graphique approprié pour vos données
  • ✓ Barres triées (par valeur, pas alphabétiquement)
  • ✓ Thème professionnel (theme_minimal())
  • ✓ Source des données en légende
  • ✓ Sauvegardé en haute résolution (300 dpi)

Exercice Final : Analyse Complète

20:00

Tâche : Créer trois graphiques professionnels pour un rapport fiscal

Créer :

  1. Graphique à barres : TVA totale par industrie (trié, horizontal)
  2. Nuage de points : TVA attendue vs réelle avec ligne de tendance et couleur par taille d’entreprise
  3. Graphique linéaire : Écart moyen de TVA dans le temps

Tous les graphiques doivent avoir : - Titres et étiquettes appropriés - theme_minimal() - Couleurs professionnelles - Légende de source des données

Sauvegarder les trois en fichiers PNG (300 dpi)

Récapitulatif

Ce Que Vous Avez Appris

Concepts fondamentaux : - Quand utiliser les graphiques à barres, nuages de points et graphiques linéaires - Le modèle ggplot2 : ggplot() + aes() + geom_*() - Mapper les données aux esthétiques (x, y, color, fill) - Fill vs color : les points utilisent color, les barres utilisent fill - La règle aes() : variables à l’intérieur, valeurs fixes à l’extérieur

Compétences pratiques : - Créer des visualisations professionnelles - Barres groupées et empilées pour plusieurs catégories - Ajouter des étiquettes et des thèmes - Utiliser le facettage pour plusieurs groupes - Sauvegarder des graphiques de haute qualité

Erreurs Courantes à Éviter

⚠️ Oublier le +

# ❌ Erreur !
ggplot(data, aes(x = var1, y = var2))
  geom_point()

# ✓ Correct
ggplot(data, aes(x = var1, y = var2)) +
  geom_point()

⚠️ Mauvaise utilisation de aes() - Variables → à l’intérieur de aes() - Valeurs fixes → à l’extérieur de aes()

Référence Rapide

Graphique à barres :

# Graphique à barres simple
ggplot(data, aes(x = category, y = value)) +
  geom_bar(stat = "identity", fill = "blue") +
  coord_flip()

# Barres groupées
ggplot(data, aes(x = category, y = value, fill = group)) +
  geom_bar(stat = "identity", position = "dodge") +
  coord_flip()

# Barres empilées
ggplot(data, aes(x = category, y = value, fill = group)) +
  geom_bar(stat = "identity", position = "stack") +
  coord_flip()

Nuage de points :

ggplot(data, aes(x = var1, y = var2, color = group)) +
  geom_point() +
  geom_smooth(method = "lm")

Graphique linéaire :

ggplot(data, aes(x = time, y = value, color = group)) +
  geom_line() +
  geom_point()

Rappel : Les points utilisent color, les barres utilisent fill

Ressources

Documentation : - R for Data Science - Chapitre 2 - Fiche aide-mémoire ggplot2

Exemples : - Galerie de Graphiques R

Astuce

Quand vous êtes bloqué : Cherchez sur Google “ggplot how to…” - il y a presque toujours un exemple !

Merci !

Vous pouvez maintenant : - Choisir le bon type de graphique pour votre question - Créer des visualisations fiscales professionnelles - Communiquer efficacement les insights des données

La pratique rend parfait : - Essayez ces techniques avec vos propres données - Commencez simple, ajoutez de la complexité progressivement - Partagez les graphiques avec vos collègues pour obtenir des retours

Questions ?