用于比较的嵌套圆环图
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
所以这两个图应该代表 1
和 2
列,但是 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()
我正在尝试制作两个甜甜圈图来比较一些指标。数据框如下,
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
所以这两个图应该代表 1
和 2
列,但是 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()