[英]Plotting smooth functions from a gam (using type = 'terms')
[英]Plotting two smooth terms from different GAM's on a single plot in R
您可以將每個站點的子集傳遞給幾個不同的geom_smooth()
。 像這樣的東西:
your_plot +
geom_smooth(data = subset1)+
geom_smooth(data = subset2)
如果你提供一個代表,我可能會更准確。
最簡單的方法是從覆蓋您想要的海拔范圍的兩個模型創建預測,然后繪制擬合值。
例如(代碼沒有檢查,因為我現在是 AFK)
library("gratia")
library("dplyr")
newd <- data.frame(Elevation = c(seq(1700, 2800, length = 100),
seq(2500, 3800, length = 100)),
Site = rep(c("A", "B"), each = 100))
fv1 <- fitted_values(gam1, data = filter(newd, Site == "A"),
type = "response")
fv2 <- fitted_values(gam2, data = filter(newd, Site == "B"),
type = "response")
fv <- bind_rows(fv1, fv2)
然后你應該在fv
中有足夠的數據來繪制,比如說
library("ggplot2")
fv %>% ggplot(aes(x = Elevation, colour = Site)) +
geom_ribbon(aes(ymin = lower, ymax = upper), alpha = 0.2) +
geom_line(aes(y = fitted)) +
geom_point(data = foo, aes(x = Elevation, y = Diversity))
(最后一行用於添加原始數據,但我不確定你是如何安排的,所以自己弄清楚。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.