Je veux ajouter des étiquettes de données sur l'omble à tarte à facettes.
Peut-être que quelqu'un peut m'aider.
Mes données:
year <- c(1,2,1,2,1,2)
prod <- c(1,1,2,2,3,3)
quantity <- c(33,50,33,25,34,25)
df <- data.frame(year, prod, quantity)
rm(year, prod, quantity)
Code:
library(ggplot2)
# center's calculated by hand
centr2 <- c(16, 25, 49, 62.5, 81, 87.5)
ggplot(data=df, aes(x=factor(1), y=quantity, fill=factor(prod))) +
geom_bar(stat="identity") +
geom_text(aes(x= factor(1), y=centr2, label = df$quantity), size=10) +
facet_grid(facets = .~year, labeller = label_value) +
coord_polar(theta = "y")
Et mon résultat est:
Si je supprime coord_polar (theta = "y"), j'aurai le tracé suivant:
Et maintenant, il est clair pour moi pourquoi mes étiquettes de données ne correspondent pas.
Mais je ne sais pas comment y remédier.
J'ai lu:
1. Placer des étiquettes sur le graphique à secteurs
2. Ajouter du texte à ggplot avec des densités à facettes
3. Graphique à secteurs obtenant son texte les uns sur les autres
Mais je n'ai pas trouvé la réponse.
J'aborderais cela en définissant une autre variable (que j'appelle pos
) dans df
qui calcule la position des étiquettes de texte. Je le fais avec dplyr
mais vous pouvez bien sûr aussi utiliser d'autres méthodes.
library(dplyr)
library(ggplot2)
df <- df %>% group_by(year) %>% mutate(pos = cumsum(quantity)- quantity/2)
ggplot(data=df, aes(x=factor(1), y=quantity, fill=factor(prod))) +
geom_bar(stat="identity") +
geom_text(aes(x= factor(1), y=pos, label = quantity), size=10) + # note y = pos
facet_grid(facets = .~year, labeller = label_value) +
coord_polar(theta = "y")