Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ggplot2: How to add percentage labels to a donut chart

I am pretty new to R... so forgive me. I'm trying to make donut plots using ggplot2. I have modified the code of the post ggplot Donut chart but now I'm not able to add the percentage on the chart. This is my attempt:

library(ggplot2)

blank_theme <- theme_minimal()+
  theme(
    axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    panel.border = element_blank(),
    panel.grid=element_blank(),
    axis.ticks = element_blank(),
    plot.title=element_text(size=14, face="bold")
  )



dat = data.frame(count=c(319, 442, 239), category=c("University", "High Scool", "Lower"))


dat$fraction = dat$count / sum(dat$count)

dat$ymax = cumsum(dat$fraction)
dat$ymin = c(0, head(dat$ymax, n=-1))

dat$category <- factor(dat$category, levels = c("University", "High Scool", "Lower"))


p1 = ggplot(dat, aes(fill=category, ymax=ymax, ymin=ymin, xmax=4, xmin=3)) +
  geom_rect(color='blue') +
  coord_polar(theta="y") +
  xlim(c(1, 4)) 



edu<-p1 + scale_fill_brewer("Education") + blank_theme +
  theme(axis.text.x=element_blank()) + theme(legend.position=c(.5, .5)) + ggtitle("") +
  theme(panel.grid=element_blank()) +
  theme(axis.text=element_blank()) +
  theme(axis.ticks=element_blank()) +
  theme(legend.title = element_text(size=16, face="bold")) +
  theme(legend.text = element_text(size = 14, face = "bold")) 

edu

I've tried many geom_text and scale_y_continuous code but... nothing. May someone help me? Thanks

like image 794
Giorjet Avatar asked Feb 08 '16 10:02

Giorjet


People also ask

How do you show percentages on a pie chart in R?

Pie chart in R with percentage Note that the round function allows you to modify the number of decimals. An alternative to display percentages on the pie chart is to use the PieChart function of the lessR package, that shows the percentages in the middle of the slices.

How do you display percentage data labels?

To display percentage values as labels on a pie chart The data labels should appear within each slice on the pie chart. On the design surface, right-click on the labels and select Series Label Properties. The Series Label Properties dialog box appears. Type #PERCENT for the Label data option.


1 Answers

You could use geom_label:

edu +
  geom_label(
    aes(label = paste(fraction * 100, "%"),
    x = 3.5,
    y = (ymin + ymax) / 2),
    inherit.aes = TRUE,
    show.legend = FALSE
  )

enter image description here

like image 128
scoa Avatar answered Sep 21 '22 12:09

scoa