如何解决在 R 中使用 ggalluvial 和 ggflags 包
我正在尝试以某种方式使用 R 中的 UK plot 重现此图表 ggalluvial package。但我不知道如何放置国家/地区标志。我尝试创建一个 ID 变量作为 y 轴,以便与 ggflags package 一起使用。
library(tidyverse)
library(ggalluvial)
#library(ggflags)
toy2 <- data.frame(
stringsAsFactors = FALSE,subject = c(
"A","B","C","D","E","A","E"
),collection2 = c(
1,1,3,3.33,3.33
),category2 = c(
"Y","X","Y","X"
),category3 = c(
"Y","ca","ar","ca"
),classes = c(
"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()
由 reprex package (v0.3.0) 于 2021 年 3 月 3 日创建
解决方法
我使用 ggplot_build() 获得了标签的位置,然后我将它们与 ggglags 一起使用
library(tidyverse)
library(ggalluvial)
library(ggflags)
toy2 <- data.frame(
stringsAsFactors = FALSE,subject = c(
"A","B","C","D","E","A","E"
),collection2 = c(
1,1,3,3.33,3.33
),category2 = c(
"Y","X","Y","X"
),category3 = c(
"Y","ca","ar","ca"
),classes = c(
"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
由 reprex package (v0.3.0) 于 2021 年 3 月 25 日创建
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。