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
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.
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.
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
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With