Génération de graphiques scientifiques en R : Courbes et intervalles de confiance

Reproduction de graphiques scientifiques : Courbe avec intervalles de confiance

La création de visualisations de données de haute qualité est cruciale pour la publication scientifique. S'inspirer des figures publiées dans des revues de premier plan est une excellente méthode pour perfectionner ses compétences en matière de création graphique.

Cet article propose de recréer un graphique spécifique, la Figure 6A, tiré d'une publication de 2022 dans la revue Cell. Ce type de graphique est une courbe linéaire avec un intervalle de confiance. Il illustre l'intensité de projection moyenne de quatre types de neurones le long de l'axe antéro-postérieur (A→P) du cortex piriforme du cerveau.

Voici le graphique original à reproduire :

Nous commençons par charger les bibliothèques R nécessaires à la manipulation des données et à la création du graphique.

library(ggplot2) # Pour la création de graphiques élégants
library(dplyr)   # Pour la manipulation de données
library(tidyr)   # Pour le remodelage des données (pivotage)

  1. Préparation des données

Les données brutes sont lues à partir d'un fichier CSV. Nous calculons ensuite les moyennes et transformons les données pour faciliter leur visualisation avec ggplot2.

# Chargement des données brutes
donnees_brutes <- read.csv("chemin/vers/votre/fichier_donnees.csv")

# Calcul de l'intensité de projection moyenne par axe A-P pour chaque type cellulaire
donnees_moyennes <- donnees_brutes %>%
  group_by(AP) %>%
  summarise(across(where(is.numeric), mean, .names = "Moyenne_{.col}")) # Calculer la moyenne pour chaque colonne numérique

# Remodelage des données moyennes pour ggplot2
# 'pivot_longer' transforme les colonnes de type cellulaire en lignes
df_moyennes_long <- donnees_moyennes %>%
  pivot_longer(
    cols = starts_with("Moyenne_"),
    names_to = "TypeCellulaire",
    names_prefix = "Moyenne_",
    values_to = "IntensiteMoyenne"
  ) %>%
  mutate(TypeCellulaire = gsub("\\.", "", TypeCellulaire)) # Nettoyer les noms des types cellulaires si nécessaire

# Remodelage de toutes les données brutes pour inclure les points individuels et les intervalles de confiance
df_complet_long <- donnees_brutes %>%
  pivot_longer(
    cols = -AP, # Toutes les colonnes sauf 'AP'
    names_to = "TypeCellulaire",
    values_to = "IntensiteProjection"
  )

  1. Définition de la palette de couleurs

Une palette de couleurs spécifique est définie pour distinguer les quatre types de neurones dans le graphique.

palette_couleurs <- c(
  "AON" = "#0073c0",
  "OT" = "#d8531f",
  "CoA" = "#e9b021",
  "IENT" = "#731c7e"
)

  1. Création du grahpique

Le grahpique est construit en utilisant la grammaire des graphiques de ggplot2. Il inclut une ligne pour la moyenne de chaque groupe et une bande de confiance générée par l'ajustement local (loess).

graphique_final <- ggplot(
  df_complet_long,
  aes(x = AP, y = IntensiteProjection, fill = TypeCellulaire, color = TypeCellulaire)
) +
  # Ajout des lignes de tendance moyennes (avec intervalles de confiance par défaut de geom_smooth)
  geom_smooth(method = "loess", se = TRUE, aes(group = TypeCellulaire), size = 0.8) +
  # Ajout des lignes de données moyennes (pour une représentation plus directe de la moyenne)
  geom_line(
    data = df_moyennes_long,
    aes(x = AP, y = IntensiteMoyenne, color = TypeCellulaire),
    size = 1.2,
    linetype = "solid"
  ) +
  scale_color_manual(values = palette_couleurs) + # Appliquer les couleurs définies aux lignes
  scale_fill_manual(values = palette_couleurs) +  # Appliquer les couleurs définies aux intervalles de confiance
  scale_y_continuous(
    breaks = seq(0, 0.8, 0.2),
    limits = c(0, 0.8),
    expand = expansion(mult = c(0, 0))
  ) +
  scale_x_continuous(
    breaks = seq(0, 25, 5),
    limits = c(1, 25),
    expand = expansion(mult = c(0, 0))
  ) +
  labs(
    x = "Tranche A-P du cortex piriforme",
    y = "Intensité moyenne de projection"
  ) +
  theme_bw(base_size = 15) + # Utiliser un thème noir et blanc avec une taille de base de police
  theme(
    panel.grid = element_blank(), # Supprimer les grilles du panneau
    legend.title = element_blank() # Supprimer le titre de la légende
  )

print(graphique_final)

Le graphique résultant devrait ressembler à ceci :

  1. Enreigstrement du graphique

Le graphique final est enregistré au format PDF, un format vectoriel idéal pour les publications scientifiques.

ggsave(
  "figure_reproduite.pdf",
  graphique_final,
  width = 8,
  height = 6,
  dpi = 300
)

Pour une finalisation esthétique, le fichier PDF peut ensuite être ouvert dans un logiciel de graphisme vectoriel comme Adobe Illustrator pour des ajustements mineurs, tels que l'alignement de la légende ou la taille du texte, si nécessaire.

Étiquettes: ggplot2 R VisualisationDonnees GraphiqueLigne IntervalleConfiance

Publié le 12 août à 23h39