R + ggplot2 => ajouter des étiquettes sur le diagramme à secteurs facet [dupliquer]

cette question a déjà une réponse ici:

je veux ajouter des étiquettes de données sur des ombles à tartes.

Peut-être que quelqu'un pourra m'aider.

My 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:

pie char

si je supprime coordin_polar (theta = "y"), j'aurai le tracé suivant:

bar plot

et maintenant il est clair pour moi, pourquoi mes étiquettes de données ne correspondaient pas.

Mais je ne sais pas comment le résoudre.

je lis:

1. placer les étiquettes sur le diagramme à secteurs

2. ajouter du texte à ggplot avec des densités facettées 1519130920
3. Pie plot obtenir son texte sur l'autre

mais n'a pas trouvé la réponse.

21
demandé sur Community 2014-07-17 16:22:20

1 réponses

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 également utiliser d'autres méthodes de cours.

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")

pie

21
répondu docendo discimus 2014-07-17 14:15:59