Reputation: 2441
In ggplot2, how to add a white hole in the middle of the pie chart? Please refer to below code for current plot (the left plot) . Thanks!
library(tidyverse)
pie_data <- data.frame(category=c('A','B','C','A','B','C'),
year=c(2020,2020,2020,2021,2021,2021),
sales=c(40,30,20,10,15,10))
pie_data %>% ggplot(aes(x=factor(year),y=sales,fill=category))+
geom_col(position='fill',width=1,color='white')+
coord_polar(theta = 'y')+
theme_void()
Upvotes: 5
Views: 914
Reputation: 31
You can add an hollow bar at the center:
pie_data %>% ggplot(aes(x=factor(year),y=sales,fill=category))+
geom_col(position='fill',width=1,color='white')+
coord_polar(theta = 'y')+
geom_col(aes(x=0,y=0))+
theme_void()
if you want a larger circle, use a negative x coordinate:
geom_col(aes(x=-1,y=0))
Upvotes: 2
Reputation: 174328
Just widen the limits of your x axis (it's easier to do this if you don't convert the year into a factor):
pie_data %>% ggplot(aes(x = year, y = sales, fill = category))+
geom_col(position = 'fill', width = 1, color = 'white') +
coord_polar(theta = 'y') +
lims(x = c(2019, 2022)) +
theme_void()
You can control the size of the white hole by changing 2019 in the above code. The earlier the year, the larger the hole:
pie_data %>% ggplot(aes(x = year, y = sales, fill = category))+
geom_col(position = 'fill', width = 1, color = 'white') +
coord_polar(theta = 'y') +
lims(x = c(2017, 2022)) +
theme_void()
Upvotes: 8