用于比较的嵌套圆环图

Nested donut chart for comparison

我正在尝试制作两个甜甜圈图来比较一些指标。数据框如下,

new_sum    var                 `1`   `2`
    <dbl> <chr>               <dbl> <dbl>
1    98.7 cnt_alerts           45.1  NA  
2    98.7 cnt_incidents_total  15.6  NA  
3    98.7 sum_of_events       100    NA  
4   100   cnt_alerts           NA    44.4
5   100   cnt_incidents_total  NA    16.2
6   100   sum_of_events        NA   100

所以这两个图应该代表 12 列,但是 sum_of_events 行应该取自 new_sum 列。所以最后这两个图将如下所示(尝试用油漆复制)

数据

structure(list(new_sum = c(98.7093505166464, 98.7093505166464, 
98.7093505166464, 100, 100, 100), var = c("cnt_alerts", "cnt_incidents_total", 
"sum_of_events", "cnt_alerts", "cnt_incidents_total", "sum_of_events"
), `1` = c(45.0519047096481, 15.6423424701131, 100, NA, NA, NA
), `2` = c(NA, NA, NA, 44.4483592005942, 16.201786624667, 100
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-6L))

是这样的吗?

library(tidyverse)
df1 %>% 
  mutate(
    id = rep(1:2, each = 3),
    value = coalesce(`1`, `2`),
    value = ifelse(var == "sum_of_events", new_sum, value)
  ) %>% 
  ggplot(aes(var)) + 
  geom_col(aes(y = 100), position = 'identity', fill = 'white', col = 1, width = 0.5) +
  geom_col(aes(y = value), position = 'identity', fill = 'grey60', col = 1, width = 0.5) +
  facet_grid(~id) +
  coord_polar(theta = 'y') +
  theme_minimal()