R + ggplot2 => agregar tags en el gráfico circular faceta

Quiero agregar tags de datos en faceed pie char.
Quizás alguien pueda ayudarme.

Mis datos:

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) 

Código:

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

Y mi resultado es:

pastel de char

Si elimino coord_polar (theta = “y”), tendré la siguiente gráfica:

diagrama de barras

Y ahora está claro para mí, por qué mis tags de datos no coinciden.
Pero no sé cómo arreglarlo.

Yo leo:
1. Coloque las tags en el gráfico circular
2. Agregue texto a ggplot con densidades facetadas
3. Parcela para obtener su texto uno encima del otro

Pero no encontré la respuesta.

Me acercaría a esto definiendo otra variable (que llamo pos ) en df que calcula la posición de las tags de texto. Hago esto con dplyr pero también puedes usar otros métodos, por supuesto.

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

tarta

Intereting Posts