linkET结合aplot可视化随机森林&相关结果
写在前面
之前厚哥有过推文:点击阅读 用于拼接相关分析结果和随机森林结果。非常好看。
但是最近有朋友的学生使用了这个代码,发现对于规律的寻找可以有更好的展示。那就是对这些重要的环境变量按照重要程度进行排序,然后在进行展示,重点关注重要性高的环境因子和群落等的关系。
这里的解决方案就是对变量重要性排序后再进行可视化,然后使用aplot拼图,不花多少功夫就解决了。
library(linkET)
library(vegan)
data(varespec)
data(varechem)
head(varespec)
head(varechem)
args(random_forest)
## function (spec, env, byrow = TRUE, seed = 123, ...)
## NULL
library(ggplot2)
rf <- random_forest(varespec, varechem)
# dat0 = rf$importance
# head(dat0)
# dat0 = dat0[as.character(dat$name),]
# dat01= rf$p[as.character(dat$name),]
p <- correlate(varespec, varechem) %>%
qcorrplot(extra_mat = list(importance = rf$importance,
pvalue = rf$p),
fixed = FALSE) +
geom_tile(colour = "grey80", size = 0.25) +
geom_point(aes(size = importance), fill = NA, shape = 21,
data = function(data) data[data$pvalue < 0.05, , drop = FALSE]) +
scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu"))
p
dat = rf$explained %>% arrange(explained)
dat$name = factor(dat$name,levels = dat$name)
p2 <- ggplot(dat, aes(explained, name)) +
geom_col(fill = "steelblue") +
# scale_y_discrete(limits = rev(names(varespec))) +
theme_bw() +
theme(axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.title.y = element_blank())
p2
library(aplot)
p2 %>%
aplot::insert_left(p, width=2)