Diagramme en barres
##----
# BARPLOT (DIAGRAMME EN BARRES)
Modalites = c("Modalité A", "Modalité B", "Modalité C")
Pourcentages = c(30, 50, 20)
couleurs = c("pink", "cadetblue", "darkgreen")
Graphe = barplot(
Pourcentages,
col = couleurs, # Palette de couleurs
border = F, # Pas de bordure autour des barres
width = 1, # Largeur des barres
names.arg = Modalites, # Noms sous les barres
main = "Répartition des Modalités", # Titre
cex.names = 1.2, # Taille du texte des modalités
cex.axis = 1 ,
yaxt='n' , # Suppression de l'axe des ordonnées
ylim = c(0, 60)
)
# Ajout des annotations de pourcentages au-dessus des barres
text(
x = Graphe, # Position sur l'axe des X
y = Pourcentages + 2, # Position légèrement au-dessus des barres
labels = paste0(Pourcentages, " %"),# Texte affiché
cex = 1.2, # Taille du texte
col = "black", # Couleur du texte
font = 2 # Texte en gras
)

# DIAGRAMME EN BARRES EMPILEES
# Données
Modalites = c("Modalité A", "Modalité B", "Modalité C")
Pourcentages = c(30, 50, 20)
# Créer une matrice avec les pourcentages et les modalités comme noms de lignes
data = matrix(Pourcentages,
dimnames = list(Modalites))
# Création du graphique à barres empilées
BPempile <- barplot(
data, # Pourcentages
beside = FALSE, # Barres empilées
col = couleurs, # Palette de couleurs
border = NA, # Pas de bordure
main = "Répartition des Modalités (Empilées)", # Titre
cex.names = 1.2, # Taille des noms des modalités
ylim = c(0, 150), # Ajuster les limites de l'axe Y si nécessaire
yaxt="n"
)
# Ajouter les pourcentages au-dessus des barres
pos_y <- apply(data, 2, cumsum) - Pourcentages/2 # Calculer les positions verticales des textes
for (i in 1:3) {
text(
x = BPempile, # Position horizontale (x)
y = pos_y[i], # Position verticale (y)
labels = paste0(data[i], "%"), # Texte avec pourcentage
cex = 1.2, # Taille du texte
col = "white", # Couleur du texte
font = 2 # Texte en gras
)
}
# Ajouter la légende
legend(
"topright",
legend = Modalites,
fill = couleurs,
title = "Modalités",
cex = 1.2
)

# Cas de plusieurs graphiques empilés
# Données
Modalites <- c("Modalité A", "Modalité B", "Modalité C")
Groupes <- c("Groupe 1", "Groupe 2", "Groupe 3")
couleurs <- c("pink", "cadetblue", "darkgreen")
# Données sous forme de matrice : chaque ligne correspond à une modalité et chaque colonne à un groupe
data <- matrix(
c(30, 40, 50, 20, 30, 10, 50, 30, 40), # Chaque valeur est le pourcentage pour une modalité dans un groupe
nrow = 3, # 3 modalités
byrow = TRUE, # Remplir ligne par ligne
dimnames = list(Modalites, Groupes) # Nommer les lignes et colonnes
)
# Création du graphique en barres empilées
bar_positions <- barplot(
data,
beside = FALSE, # Barres empilées
col = couleurs, # Palette de couleurs
border = NA, # Pas de bordure
main = "Répartition des Modalités (Empilées)", # Titre
cex.names = 1.2, # Taille des noms des modalités
ylim = c(0, 150), # Ajuster les limites de l'axe Y si nécessaire
yaxt = 'n' # Désactiver les ticks de l'axe Y
)
# Calculer les positions verticales pour ajouter les pourcentages au-dessus des barres
pos_y <- apply(data, 2, cumsum) - data / 2 # Calculer la position des pourcentages au milieu de chaque barre empilée
# Ajouter les pourcentages au-dessus des barres
for (i in 1:ncol(data)) {
for (j in 1:nrow(data)) {
text(
x = bar_positions[i], # Position horizontale (x)
y = pos_y[j, i], # Position verticale (y)
labels = paste0(data[j, i], "%"), # Texte avec pourcentage
cex = 1.2, # Taille du texte
col = "white", # Couleur du texte
font = 2 # Texte en gras
)
}
}
# Ajouter la légende
legend(
"topleft",
legend = Modalites,
fill = couleurs,
title = "Modalités",
cex = 1.2
)

# AVEC GGPLOT2
# Charger la librairie ggplot2
library(ggplot2)
# Données
Modalites <- c("Modalité A", "Modalité B", "Modalité C")
Pourcentages <- c(30, 50, 20)
couleurs <- c("pink", "cadetblue", "darkgreen")
# Calcul des positions pour les pourcentages
position = cumsum(Pourcentages) - Pourcentages / 2
# Créer le graphique en secteurs
ggplot(data, aes(x = "", y = Pourcentages, fill = Modalites)) +
geom_bar(stat = "identity", width = 1, color = "white") + # Barres sans bordures visibles
scale_fill_manual(values = couleurs) + # Couleurs personnalisées
geom_text(aes(y = position-5, label = paste0(Pourcentages, "%")),
color = "white", fontface = "bold", size = 6) + # Ajouter les pourcentages
labs(title = "Répartition des Modalités") + # Titre du graphique
theme(plot.title = element_text(size = 20, face = "bold", hjust = 0.5))

Graphique circulaire (pie)
### GRAPHIQUE CIRCULAIRE
Modalites = c("Modalité A", "Modalité B", "Modalité C")
Pourcentages = c(30, 50, 20)
couleurs = c("pink", "cadetblue", "darkgreen")
data = data.frame(Modalites, Pourcentages)
libelles = paste(Pourcentages, "%", sep="")
pie(Pourcentages, labels = libelles, border = F, col=couleurs,
main = "Représentation à l'aide d'un \n graphique circulaire")
legend("topleft", Modalites, cex=1, fill=couleurs)

# Graphique circulaire amélioré
pie(
Pourcentages,
labels = libelles, # Libellés combinant les modalités et les pourcentages
border = "white", # Bordures blanches pour mieux séparer les parts
col = couleurs, # Palette de couleurs personnalisée
radius = 1, # Rayon du camembert
main = "Répartition des Modalités\n(Graphique Circulaire)", # Titre centré et clair
cex.main = 1.2 # Taille du titre
)
# Ajouter une légende
legend(
"topleft", # Position de la légende
legend = Modalites, # Texte de la légende
fill = couleurs, # Couleurs associées aux parts
border = "black", # Bordure pour chaque carré
cex = 0.9, # Taille de la police
box.lty = 1 # Type de bordure de la légende
)

# Diagramme circulaire avec ggplot2
library(ggplot2)
ggplot(data, aes(x = "", y = Pourcentages, fill = Modalites)) +
geom_bar(stat = "identity", width = 1, color = "white") + # Ajout de bordures blanches
coord_polar("y", start = 0) + # Transformation en camembert
scale_fill_manual(values = couleurs) + # Palette de couleurs personnalisée
geom_text(aes(label = paste0(Pourcentages, "%")), # Libellés avec les pourcentages
position = position_stack(vjust = 0.5), # Placement centré sur chaque part
color = "white", size = 5, fontface = "bold") + # Couleur, taille, et style du texte
labs(
title = "Répartition des Modalités",
subtitle = "Graphique circulaire illustrant les proportions",
fill = "Modalités"
) +
theme_void() + # Suppression des axes pour un rendu épuré
theme(
plot.title = element_text(size = 16, face = "bold", hjust = 0.5), # Titre centré et en gras
plot.subtitle = element_text(size = 12, hjust = 0.5), # Sous-titre centré
legend.title = element_text(face = "italic"), # Légende en italique
legend.text = element_text(size = 10) # Texte de la légende ajusté
)

Graphique circulaire (donut)
# DONUT
data$fraction = data$Pourcentages / sum(data$Pourcentages)
data$ymax = cumsum(data$fraction)
data$ymin = c(0, head(data$ymax, n=-1))
G = ggplot(data, aes(ymax=ymax, ymin=ymin, xmax=4, xmin=3, fill=Modalites))
G + geom_rect() + xlim(c(0, 4)) + coord_polar(theta="y") +
scale_fill_manual(values = couleurs) +
labs(title = "Représentation à l'aide d'un graphique circulaire") +
theme_void()

data$labelPosition <- (data$ymax + data$ymin) / 2
data$label <- paste0( "\n",data$Pourcentages, "% ")
data
## Modalites Pourcentages fraction ymax ymin labelPosition label
## 1 Modalité A 30 0.3 0.3 0.0 0.15 \n30%
## 2 Modalité B 50 0.5 0.8 0.3 0.55 \n50%
## 3 Modalité C 20 0.2 1.0 0.8 0.90 \n20%
G + geom_rect() +
geom_text( x=2, aes(y=data$labelPosition, label=data$label, color=Modalites), size=6) + scale_fill_manual(values = couleurs) + xlim(c(0, 4)) +
scale_color_manual(values = couleurs) +
labs(title = "Représentation à l'aide d'un graphique en anneau \n appelé également Donut") +
coord_polar(theta="y") +
theme_void()
