Использование ggalluvial в R с пакетом ggflags
Я пытаюсь как-то воспроизвести этот график британского сюжета с галлювиальным пакетом в R. Но я не знаю, как поставить флаги стран. Я попытался создать переменную ID в качестве оси Y, чтобы использовать ее с пакетом ggflags .
library(tidyverse)
library(ggalluvial)
#library(ggflags)
toy2 <- data.frame(
stringsAsFactors = FALSE,
subject = c(
"A", "B", "C", "D", "E", "A",
"B", "C", "D", "E", "A", "B", "C", "D", "E"
),
collection2 = c(
1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
3.33, 3.33, 3.33, 3.33, 3.33
),
category2 = c(
"Y", "X", "X", "Y", "X", "X",
"Y", "Y", "Y", "X", "X", "Y", "Y", "Y", "X"
),
category3 = c(
"Y", "X", "X", "Y", "X", "X",
"Y", "Y", "Y", "X", "ca", "ar", "ar", "ar", "ca"
),
classes = c(
"one",
"one", "one", "two", "two", "one", "one", "one",
"two", "two", "one", "one", "one", "two", "two"
)
)
ggplot(toy2, aes(
x = collection2,
stratum = category2,
alluvium = subject,
country = category3,
)) +
# scale_x_discrete(expand = c(.1, 0.2)) +
geom_alluvium(aes(fill = classes)) +
geom_stratum(color = "grey") +
geom_text(
stat = "stratum",
aes(label = category3)
) +
scale_fill_manual(values = c("#ED5667", "#4758AA")) +
theme_void()
Создано 2021-03-03 пакетом correx (v0.3.0)
1 ответ
Я получил расположение меток с помощью ggplot_build(), затем использовал их с помощью ggglags
library(tidyverse)
library(ggalluvial)
library(ggflags)
toy2 <- data.frame(
stringsAsFactors = FALSE,
subject = c(
"A", "B", "C", "D", "E", "A",
"B", "C", "D", "E", "A", "B", "C", "D", "E"
),
collection2 = c(
1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
3.33, 3.33, 3.33, 3.33, 3.33
),
category2 = c(
"Y", "X", "X", "Y", "X", "X",
"Y", "Y", "Y", "X", "X", "Y", "Y", "Y", "X"
),
category3 = c(
"Y", "X", "X", "Y", "X", "X",
"Y", "Y", "Y", "X", "ca", "ar", "ar", "ar", "ca"
),
classes = c(
"one",
"one", "one", "two", "two", "one", "one", "one",
"two", "two", "one", "one", "one", "two", "two"
)
)
p <- ggplot(toy2, aes(
x = collection2,
stratum = category2,
alluvium = subject,
country = category3,
)) +
# scale_x_discrete(expand = c(.1, 0.2)) +
geom_alluvium(aes(fill = classes)) +
geom_stratum(color = "grey") +
geom_text(
stat = "stratum",
aes(label = category3)
) +
scale_fill_manual(values = c("#ED5667", "#4758AA")) +
theme_void()
points <- ggplot_build(p) %>%
pluck("data") %>%
pluck(3) %>%
as_tibble() %>%
filter(label %in% c("ar", "ca")) %>%
mutate(category3 = label) %>%
mutate(category2 = stratum) %>%
mutate(collection2 = x) %>%
mutate(alluvium = NA) %>%
mutate(subject = NA)
p2 <- p + geom_flag(
data = points,
aes(
country = category3,
y = y
),
size = 20,
color = "black"
)
p2
Создано 2021-03-25 пакетом REPEX (v0.3.0)