3

I am trying to match labels with my pie chart with ggplot2:

Code:

values=c(59,4,4,11,26)
labels=c("catA", "catB","catC","catD","catE")
pos = cumsum(values)- values/2
graph <- data.frame(values, labels,pos)

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, pos = graph$pos )

pie <- ggplot(values, aes(x = "", y = val, fill = Type)) + 
  geom_bar(width = 1,stat="identity") + 
  geom_text(aes(x= "", y=pos, label = val), size=3) 
pie + coord_polar(theta = "y")

Output: myoutput

I read these topics, but without any success:

Community
  • 1
  • 1
stanedav
  • 447
  • 1
  • 5
  • 12

1 Answers1

7

Starting in ggplot2 2.2.0, you can use position_stack with vjust = .5 to center labels in stacked bars charts (and so pie charts). You no longer need to calculate the position outside of ggplot2. See the NEWS for more details on these changes.

ggplot(values, aes(x = "", y = val, fill = Type)) + 
    geom_bar(width = 1,stat="identity") + 
    geom_text(aes(label = val), size=3, position = position_stack(vjust = 0.5))  + 
    coord_polar(theta = "y")

enter image description here

aosmith
  • 34,856
  • 9
  • 84
  • 118