2012-01-21 11 views
7

Sólo tratando de solucionar este etiquetado se superponen:parcela Pie conseguir su texto en la parte superior de uno al otro

Mi código:

values=c(164241,179670) 
    labels=c("Private", "Public") 
    colors=c("#cccccc", "#aaaaaa") 
    categoriesName="Access" 
    percent_str <- paste(round(graph$values/sum(graph$values) * 100,1), "%", sep="") 

    values <- data.frame(val = graph$values, Type = graph$labels, percent=percent_str) 

    pie <- ggplot(values, aes(x = "", y = val, fill = Type)) + geom_bar(width = 1) + 
      geom_text(aes(y = **val + 1**, **hjust=0.5**, **vjust=-0.5**, label = percent), colour="#333333", face="bold", size=10) + 
      coord_polar(theta = "y") + ylab(NULL) + xlab(NULL) + 
      scale_fill_manual(values = graph$colors) + labs(fill = graph$categoriesName) + 
      opts(title = graph$title, 
       axis.text.x = NULL, 
       plot.margin = unit(c(0,0,0,0), "lines"), 
       plot.title = theme_text(face="bold", size=14), 
       panel.background = theme_rect(fill = "white", colour = NA)) 
    print(pie) 

ha intentado jugar con los valores marcados con asteriscos (* * **) pero no han llegado a ninguna parte. Cualquier ayuda apreciada.

Respuesta

14

aquí es un ejemplo:

pie <- ggplot(values, aes(x = "", y = val, fill = Type)) + 
    geom_bar(width = 1) + 
    geom_text(aes(y = val/2 + c(0, cumsum(val)[-length(val)]), label = percent), size=10) 
pie + coord_polar(theta = "y") 

enter image description here

Tal vez esto le ayudará a entender cómo funciona:

pie + coord_polar(theta = "y") + 
    geom_text(aes(y = seq(1, sum(values$val), length = 10), label = letters[1:10])) 

enter image description here

+0

gracias! útil de hecho. – fabiopedrosa

+0

¿sabes cómo colocarlos más en el exterior? aumentar el radio de texto. – fabiopedrosa

+0

intente 'geom_text (aes (x = 1.3, y = ...' – kohske

Cuestiones relacionadas