Hi Georg, If you remove the coord_polar, you'll see that the optimal y-value for the labels is between the upper and lower bound of the stacked bar-element.
I am not sure it is the most elegant solution, but you can calculate them like this: df <- data.frame(group = c("Male", "Female", "Child"), value = c(25, 25, 50)) # Order the data.frame to match that of the final plot df <- df[order(df$group, decreasing = TRUE), ] # Get the upper bound of the stacked bar element df$upper <- cumsum(df$value) # And the lower df$lower <- c(0, df$upper[seq_along(1:(nrow(df) - 1))]) # Now calculate the position df$label_pos <- (df$upper - df$lower)/2 + df$lower # And plot blank_theme <- theme_minimal() + theme( axis.title.x = element_blank(), axis.title.y = element_blank(), axis.text.x = element_blank(), panel.border = element_blank(), panel.grid = element_blank(), axis.ticks = element_blank(), plot.title = element_text(size = 4, face = "bold")) ggplot(df, aes(x = "", y = value, fill = group)) + geom_bar( width = 1, stat = "identity")+ # coord_polar("y", start = 0) + scale_fill_brewer( name = "Gruppe", palette = "Blues") + blank_theme + geom_text( aes( y = label_pos, label = scales::percent(value/100)), size = 5) + labs(title = "Pie Title") HTH Ulrik On Thu, 16 Mar 2017 at 17:24 <g.maub...@weinwolf.de> wrote: > Hi All, > > I have a question to ggplot 2. My code is the following: > > -- cut -- > > library(ggplot2) > library(scales) > > df <- > data.frame(group = c("Male", "Female", "Child"), > value = c(25, 25, 50)) > > blank_theme <- theme_minimal() + theme( > axis.title.x = element_blank(), > axis.title.y = element_blank(), > axis.text.x = element_blank(), > panel.border = element_blank(), > panel.grid = element_blank(), > axis.ticks = element_blank(), > plot.title = element_text(size = 4, face = "bold")) > > ggplot(df, aes(x = "", y = value, fill = group)) + > geom_bar( > width = 1, > stat = "identity") + > coord_polar("y", start = 0) + > scale_fill_brewer( > name = "Gruppe", > palette = "Blues") + > blank_theme + > geom_text( > aes( > y = c(10, 40, 75), > label = scales::percent(value/100)), > size = 5) + > labs(title = "Pie Title") > > -- cut -- > > Is there a way to give the position of the labels to the chunks of the pie > in a generalized form instead of finding the value interatively by > trial-n-error? > > How can I adjust the title of the graph converning font height and postion > (e. g. center)? > > Kind regards > > Georg > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.