我正在嘗試使用 R 中的 ggplot 創建一個平鋪圖,在 Y 軸上有一個多級標簽,并且只有一個 x 軸副本(例如,沒有刻面)。期望的結果是這樣的(想象一下瓷磚都在那里):

這是我到目前為止所擁有的:
dat<- as.data.frame(cbind(Species = rep(c("a", "b", "c", "d", "e", "f", "g"),each = 3 ),
threats = rep(c("1", "2", "3"), 7),
elev_grp = c(rep("Low", 9), rep("Mid", 9), rep("High", 3)),
match = sample(1:3, size = 21, replace = T)))
dat$match.labs<- ifelse(dat$match == 1, "Both",
ifelse(dat$match == 2, "Neither", "One"))
ggplot(dat, aes(reorder(threats, match), Species, fill = match.labs))
geom_tile()
scale_fill_manual(values = c("#bd421f",
"#3fadaf",
"#ffb030"))
這給了我這個:

分面是不合適的,因為每個物種對于每個“威脅”級別都有一個“匹配”值,并且在我的實際資料集中有幾十個級別,這使得在“elev_grp”的不同方面重復 x 軸是不切實際的。我也考慮過堆疊的方面,但無法弄清楚如何強制它們共享一個 x 軸,因此情節中沒有巨大的灰色區域......
任何幫助,將不勝感激。謝謝你的時間!
uj5u.com熱心網友回復:
您可以使用舊的“看起來不像刻面的刻面”技巧:
dat$elev_grp <- factor(dat$elev_grp, c("High", "Mid", "Low"))
ggplot(dat, aes(reorder(threats, match), Species, fill = match.labs))
geom_tile()
scale_fill_manual(values = c("#bd421f",
"#3fadaf",
"#ffb030"))
scale_y_discrete(drop = TRUE, expand = c(0, 0))
facet_grid(elev_grp~., scales = "free", space = "free_y", switch = "y")
theme(strip.placement = "outside",
panel.spacing = unit(0, "in"),
strip.background.y = element_rect(fill = "white", color = "gray75"))

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/427619.html
下一篇:為什么我的標準誤差值顯示為NA?
