Last active
August 23, 2019 16:48
-
-
Save kguidonimartins/79f6ea77c38f3e42591d3861dd0f286e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Enconding: ISO-8859-1 | |
# rm(list = ls()) | |
# Este script teve como base a seguinte página: http://renatabrandt.github.io/EBC2015/PCA.html | |
# https://gist.github.com/stevenworthington/3178163 | |
ipak <- function(pkg){ | |
new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])] | |
if (length(new.pkg)) | |
install.packages(new.pkg, dependencies = TRUE) | |
sapply(pkg, require, character.only = TRUE) | |
} | |
install.packages("packfor", repos = "http://R-Forge.R-project.org") | |
ipak(packages <- c("vegan", "packfor", "ggplot2", "ggrepel")) | |
# dados de teste | |
data("varespec") | |
data("varechem") | |
# entrada | |
Y <- decostand(varespec, "hellinger") | |
X <- decostand(varechem, "standardize") | |
# rda com seleção | |
rda1 <- rda(Y ~ ., X) # modelo saturado | |
R2a.all <- RsquareAdj(rda1)$adj.r.squared | |
env.sel <- forward.sel(Y, X, adjR2thresh = R2a.all) | |
env.sign <- sort(env.sel$order) | |
env.red <- X[, c(env.sign)] | |
rda2 <- rda(Y, env.red) | |
# Plot para uma rápida visualização | |
plot(rda2, type = "t") | |
# Atribua o objeto da ordenação a cca.results | |
# A partir daqui, o script seguirá um esqueleto baseado no objeto cca.results | |
cca.results <- rda2 | |
# Definindo objetos-padrão para o plot | |
cca.summary <- summary(cca.results) | |
(imp.axis.1 <- cca.summary$cont$importance[2,1]) # explicação do eixo 1 | |
(imp.axis.2 <- cca.summary$cont$importance[2,2]) # explicação do eixo 2 | |
(rowScores <- as.data.frame(cca.results$CCA$u)) # scores das parcelas | |
(colScores <- as.data.frame(cca.results$CCA$v)) # scores das espécies | |
(bi.var <- as.data.frame(cca.results$CCA$biplot)) # scores das variáveis ambientais | |
# Para salvar a figura em alta resolução. | |
# Sempre adeque a resolução à altura e à largura da figura. | |
# tiff(filename="figura.tiff", res=600, height=600/72*600, width=600/72*600, compression= "lzw") | |
################################## | |
# PLOTANDO AS UNIDADES AMOSTRAIS # | |
################################## | |
ggrda1 <- ggplot() + | |
# geom_point(data=rowScores, aes(x=RDA1, y=RDA2), | |
# size=4, | |
# fill = "white", | |
# shape=22) + | |
geom_vline(xintercept = 0, alpha=0.9, linetype = "dashed") + | |
geom_hline(yintercept = 0, alpha=0.9, linetype = "dashed") + | |
geom_point(data = rowScores, aes(x = RDA1, y = RDA2), | |
size = 5, | |
color = "black", fill="grey50", shape=21) + | |
theme(panel.background = element_rect(fill = "white", colour = NA), | |
panel.grid.minor = element_line(colour = NULL), | |
panel.grid.major = element_line(colour = NULL), | |
plot.background = element_rect(fill = "white", colour = NA), | |
panel.border = element_rect(fill = NA, colour = "black"), | |
axis.text.x = element_text(color ="black", size = 12, angle = 0), | |
axis.text.y = element_text(color ="black", size = 12, angle = 0)) | |
# http://www.sthda.com/english/wiki/ggplot2-axis-ticks-a-guide-to-customize-tick-marks-and-labels | |
# http://www.sthda.com/english/wiki/ggplot2-line-types-how-to-change-line-types-of-a-graph-in-r-software | |
# Visualizar | |
ggrda1 | |
######################################## | |
# DEFININDO EIXOS E LEGENDAS DOS EIXOS # | |
######################################## | |
ggrda2 <- ggrda1 + | |
xlab(paste("RDA 1 ", "(", round(imp.axis.1*100, digits = 1), "%)")) + | |
theme(axis.title.x=element_text(angle = 0, size = 15)) + #, face = "bold" | |
ylab(paste("RDA 2 ", "(", round(imp.axis.2*100, digits = 1), "%)")) + | |
theme(axis.title.y=element_text(angle = 90, size = 15)) #, face = "bold" | |
# Visualizar | |
ggrda2 | |
######################## | |
# PLOTANDO AS ESPÉCIES # | |
######################## | |
# Geralmente as espécies estão sobrepostas. Daí tem uns truques. | |
# Se as espécies NÂO estiverem sobrepostas, só rode o comando abaixo. | |
# Se estiverem sobrepostas, bloqueie o comando geom_text e | |
#libere o geom_point e geom_text_repel. | |
# Isso vai plotar os pontos das espécies e espalhar os nomes. | |
ggrda3 <- ggrda2 + | |
# SE AS ESPÉCIES ESTIVEREM SOBREPOSTAS, BLOQUEIE O COMANDO ABAIXO: | |
# geom_text(data=colScores, aes(RDA1, RDA2), | |
# size=4, | |
# label = rownames(colScores), | |
# fontface="italic") | |
# SE AS ESPÉCIES NÃO ESTIVEREM SOBREPOSTAS, BLOQUEIE O COMANDO ABAIXO | |
geom_point(data = colScores, aes(RDA1, RDA2), | |
size = 5, shape = 4)+ | |
geom_text_repel(aes(x = colScores$RDA1, y = colScores$RDA2, | |
label = rownames(colScores)), | |
size = 5, | |
fontface ="italic", | |
segment.color = "grey", | |
alpha = 0.8, | |
segment.size = 0.1, | |
box.padding = unit(0.3, 'lines'))# | |
# Visualizar | |
ggrda3 | |
#################################### | |
# PLOTANDO AS VARIÁVEIS AMBIENTAIS # | |
#################################### | |
ggrda4 <- ggrda3 + | |
geom_segment(data = bi.var, aes(x = 0, y = 0, xend = RDA1, yend = RDA2), | |
size = 1, | |
arrow = arrow(length = unit(0.2, "cm"), | |
type = "closed", angle = 15), | |
color = "black", | |
alpha = 0.5) + | |
geom_text(data = bi.var, aes(RDA1*1.05, RDA2*1.05, | |
label = rownames(bi.var)), | |
color = "black", | |
size = 5, | |
fontface = "bold") | |
#geom_text_repel(aes(x = colScores$PC1, y = colScores$PC2, label = rownames(colScores))) | |
# Visualizar | |
ggrda4 | |
ggrda5 <- ggrda4 + ggtitle("a) Minha RDA no ggplot2") + | |
theme(plot.title = element_text(lineheight =.8, face = "bold", size = 16)) | |
ggrda5 | |
# para fechar a figura | |
# dev.off() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment