How to explode pieces of a donut chart using R (ggplot2)

On the left is what my diagram looks like on a donut and on the right, how it should look:

enter image description here

Is there a way to explode a donut chart using R?

Here is my code:

ggplot(dat, aes(fill = goalGroups, ymax = ymax, ymin = ymin, xmax = 4.8, xmin = 3)) + geom_rect(color = "white") + coord_polar(theta="y", direction = -1) + xlim(c(0, 8)) + theme_bw() + theme(panel.grid=element_blank()) + theme(axis.text=element_blank()) + theme(axis.ticks=element_blank()) + theme(axis.title.x = element_blank()) + theme(axis.title.y = element_blank()) + theme(panel.border = element_blank()) 

I am very grateful for any help!

+5
source share
1 answer

You can try to create xlim and ylim for each category.

eg

Data

 dat = data.frame(count=c(30, 10), category=c("A", "C"),stringsAsFactors = F) 

Extra calc

 dat$fraction = dat$count / sum(dat$count) dat = dat[order(dat$fraction), ] dat$ymax = cumsum(dat$fraction)-0.01 dat$ymin = c(0, head(dat$ymax, n=-1))+0.01 dat$all_=length(unique(dat$category)) dat$x1=dat$all_-(1:nrow(dat))*0.5+1 dat$x2=dat$all_-(1:nrow(dat))*0.5+2 

Plot

 p2=ggplot()+aes(ymin=0)+geom_rect(data=dat,aes(fill=category,ymax=ymax, ymin=ymin, xmax=x1, xmin=x2),color = "white")+ ylim(0,1)+ xlim(c(0,3+length(unique(dat$category))))+ coord_polar(theta="y", direction = -1) + theme_bw() + theme(panel.grid=element_blank()) + theme(axis.text=element_blank()) + theme(axis.ticks=element_blank()) + theme(axis.title.x = element_blank()) + theme(axis.title.y = element_blank()) + theme(panel.border = element_blank()) p2 

enter image description here

Also works well for more than two categories

 dat = data.frame(count=c(30,15, 10), category=c("A", "B", "C"),stringsAsFactors = F) 

enter image description here

+4
source

Source: https://habr.com/ru/post/1242191/


All Articles