我有使用該ggalluvial軟體包制作沖積圖的經驗。但是,我遇到了一個問題,我試圖創建一個沖積圖,其中包含兩個不同的源,這些源會聚到 1 個變數上。
這是示例資料
library(dplyr)
library(ggplot2)
library(ggalluvial)
data <- data.frame(
unique_alluvium_entires = seq(1:10),
label_1 = c("A", "B", "C", "D", "E", rep(NA, 5)),
label_2 = c(rep(NA, 5), "F", "G", "H", "I", "J"),
shared_label = c("a", "b", "c", "c", "c", "c", "c", "a", "a", "b")
)
這是我用來制作情節的代碼
#prep the data
data <- data %>%
group_by(shared_label) %>%
mutate(freq = n())
data <- reshape2::melt(data, id.vars = c("unique_alluvium_entires", "freq"))
data$variable <- factor(data$variable, levels = c("label_1", "shared_label", "label_2"))
#ggplot
ggplot(data,
aes(x = variable, stratum = value, alluvium = unique_alluvium_entires,
y = freq, fill = value, label = value))
scale_x_discrete(expand = c(.1, .1))
geom_flow()
geom_stratum(color = "grey", width = 1/4, na.rm = TRUE)
geom_text(stat = "stratum", size = 4)
theme_void()
theme(
axis.text.x = element_text(size = 12, face = "bold")
)
(顯然我還不能嵌入影像)
如您所見,我可以洗掉這些NA值,但shared_label無法正確“堆疊”。每個唯一的行應該在列中彼此堆疊shared_label。這也將解決尺寸問題,使它們沿 y 軸的尺寸相等。
任何想法如何解決這一問題?我試過了,ggsankey但出現了同樣的問題,我無法洗掉NA值。非常感謝任何提示!
uj5u.com熱心網友回復:
該圖是“流”統計變換的預期結果,這是“流”圖形物件的默認值。(即geom_flow()= geom_flow(stat = "flow")。)看起來您想要的是指定“沖積層”統計轉換。下面我使用了您的所有代碼,但僅復制和編輯了ggplot()呼叫。
#ggplot
ggplot(data,
aes(x = variable, stratum = value, alluvium = unique_alluvium_entires,
y = freq, fill = value, label = value))
scale_x_discrete(expand = c(.1, .1))
geom_flow(stat = "alluvium") # <-- specify alternate stat
geom_stratum(color = "grey", width = 1/4, na.rm = TRUE)
geom_text(stat = "stratum", size = 4)
theme_void()
theme(
axis.text.x = element_text(size = 12, face = "bold")
)
#> Warning: Removed 2 rows containing missing values (geom_text).
![具有 2 個不同來源但收斂/共享變數的沖積圖 [R]](https://img.uj5u.com/2021/12/18/29c20253fd0245ba9d6160b106e6edc4.png)
由reprex 包(v2.0.1)于 2021 年 12 月 10 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/384687.html
