`ggalluvial`: цвет заливки `geom_flow` из слоя назначения
У меня есть следующий пример:
library(tidyverse)
library(ggalluvial)
data <- tibble(id = paste0("S", 1:20),
class_1 = c(rep("A", 10), rep("B", 10)),
class_2 = c(rep("A", 8), rep("B", 8), rep("A", 4)))
data_pvt <- data %>%
pivot_longer(starts_with("class"), names_to = "class_type", values_to = "class_label") %>%
mutate(class_type = factor(class_type),
class_label = factor(class_label))
ggplot(data_pvt, aes(x = fct_rev(class_type), stratum = class_label, alluvium = id,
label = class_label)) +
geom_flow(aes(fill = class_label), stat = "alluvium",
lode.guidance = "frontback") +
geom_stratum(aes(fill = class_label)) +
scale_x_discrete(expand = c(0.1, 0)) +
labs(x = "Class system", y = "n") +
coord_flip() +
theme_minimal()
Создано 18 февраля 2022 г. пакетом reprex (v2.0.1)
мне бы хотелось
geom_flow
взять
fill
цвет из верхнего слоя () вместо нижнего слоя (
class_2
). Я мог бы добиться этого, не
fct_rev(class_type)
в начале, но потом
class_1
находится внизу, а я хочу, чтобы он был вверху.
Любые идеи? Я мог бы использовать другие функции из
ggalluvium
или же
ggforce
, но я хотел бы сохранить возможность окрашивания слоя
class_label
.
1 ответ
Вы ищете
aes.flow = "backward"
?
ggplot(data_pvt, aes(x = fct_rev(class_type), stratum = class_label, alluvium = id,
label = class_label)) +
geom_flow(aes(fill = class_label), stat = "alluvium",
lode.guidance = "frontback", aes.flow = "backward") +
geom_stratum(aes(fill = class_label)) +
scale_x_discrete(expand = c(0.1, 0)) +
labs(x = "Class system", y = "n") +
coord_flip() +
theme_minimal()