Функция VeganCovEllipse не дает мне те же эллипсы, что и функция Ордиэллипса - PullRequest
0 голосов
/ 01 ноября 2018

Я создаю NMDS для своих магистров, и сейчас я хочу сделать симпатичные графики для моей диссертации с помощью ggplot. Я смотрю на то, как мои виды распределены по моим 3 регионам (столбец 1 моего набора данных об окружающей среде ( env )). Когда я использовал функцию заговора, я быстро взглянул на NMDS, я получил это:

MNDS <- metaMDS(spe, distance = "bray")
NMDS <- data.frame(NMDS1 = nmds$points[,1], NMDS2 = nmds$points[,2], Region=env$REGION)
NMDS$Lake <- rownames(NMDS)

spps <- data.frame(scores(nmds, display = "species"))
spps$species <- row.names(spps)
spps$Taxa <- trait$Taxa
spps$Trophic <- trait$Trophic.group

plot(MNDS, type = "t", main = paste("Region"))
ordiellipse(MNDS, as.factor(env[,1]), display = "sites", kind ="sd", conf = 0.95, label = T)

NMDS done with ordiellipse function

Все хорошо. Моя проблема, когда я пытался воспроизвести NMDS в ggplot с помощью функции veganCovEllipse. Эллипсы теперь намного меньше, чем когда я использовал ordiellipse. Я также замечаю, что если я изменю значение масштаба функции veganCovEllipse, я получу большие эллипсы.

veganCovEllipse<-function (cov, center = c(0, 0), scale = 1, npoints = 100) 
{
  theta <- (0:npoints) * 2 * pi/npoints
  Circle <- cbind(cos(theta), sin(theta))
  t(center + scale * t(Circle %*% chol(cov)))
}

df_ell <- data.frame()

for(g in levels(NMDS$Region)){
  df_ell <- rbind(df_ell, cbind(as.data.frame(with(NMDS[NMDS$Region==g,],
 veganCovEllipse(cov.wt(cbind(NMDS1,NMDS2),wt=rep(1/length(NMDS1),
              length(NMDS1)))$cov,center=c(mean(NMDS1),mean(NMDS2)))))
                                ,Region=g))
}

graph.nmds <- ggplot(data = NMDS, aes(y = NMDS2, x = NMDS1))+ 
    geom_path(data = df_ell, aes(x = NMDS1, y = NMDS2, group = Region))+ 
    geom_text(data=NMDS,aes(x=NMDS1,y=NMDS2,label=Lake),size=2.5,
            hjust= -0.25, vjust= 0.5, colour = "#666666") +
    geom_point(aes(shape = Region), size = 3) + 
    geom_text(data=spps, aes(x=spps$NMDS1, y=spps$NMDS2, label=species, colour = Trophic), size = 3, alpha = 0.75) + 
    scale_shape_manual(values=c(15, 17, 16), limits=c("YUKON", "ALASKA", "NWT"),labels=c("Yukon", "Alaska", "NWT"))+
    coord_cartesian(xlim = c(-1.5,2))+
    scale_colour_manual(values = c("#CC0033", "#339900", "#990099", "#666600", "#FF9900", "#0000FF"), 
              limits=c("carnivore", "herbivore", "immature", "omniherb", "omnivore", "parasitic"))+
    theme_bw()+
    theme(panel.background = element_blank(), 
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank(),  
          plot.background = element_blank())
graph.nmds

NMDS done with veganCovEllipse, scale = 1

Почему эллипсы такие маленькие, когда я использую veganCovEllipse, по сравнению с тем, когда я использую ordiellipse?

Также, как я уже говорил, когда я изменяю масштаб на 2 в функции veganCovEllipse, я получаю большие эллипсы. Зачем? Что означает масштаб в этой функции?

NMDS done with veganCovEllipse, scale = 2

Спасибо:)

...