Может быть способ, которым вы можете напрямую построить кумулятивные значения, однако один из способов - получить фактическое значение и построить столбчатую диаграмму с накоплением, упорядочив данные Surgery
в нужном вам порядке, используя factor
.Для factor
уровней я использовал для удобства rev(unique(Surgery))
, так как вы хотите упорядочить их в порядке, обратном порядку их появления в наборе данных.Для более сложных типов вам может понадобиться добавить levels
вручную.
library(tidyverse)
df %>%
group_by(Group) %>%
mutate(Surv_Prob1 = c(Surv_Prob[1], diff(Surv_Prob)),
Surgery = factor(Surgery, levels = rev(unique(Surgery)))) %>%
ggplot() + aes(Group, Surv_Prob1, fill = Surgery, label = Surv_Prob) +
geom_bar(stat = "identity") +
geom_text(size = 3, position = position_stack(vjust = 0.5))
данные
df <- structure(list(Surgery = structure(c(1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L), .Label = c("CV", "Hip", "Knee", "QFox"), class = "factor"),
Surv_Prob = c(0.5113, 0.6619, 0.6665, 0.7054, 0.5113, 0.6629,
0.6744, 0.7073), Group = structure(c(1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L), .Label = c("Diabetic", "Non-Diabetic"), class =
"factor")), class = "data.frame", row.names = c(NA, -8L))