2017-01-05 2 views
1

Недавно я пытался проанализировать свои данные и хочу, чтобы графики были немного приятнее, но я не могу этого сделать.R: участок PCA с разными цветами для сайтов

У меня есть набор данных с 144 сайтами и 5 переменными окружающей среды. Это в основном о композиции субстрата вокруг острова и обилия рыб. На этом острове предполагается различие в составе субстрата между севером и югом. Прямо сейчас я делаю pca и с функцией biplot работает очень хорошо, но я хотел бы немного изменить сюжет.

Мне нужно, чтобы сайты были точками и не пронумерованы, стрелки указывают на другую переменную, а сайты окрашены в соответствии с их местоположением (север или юг). Поэтому я попробовал все, что мог найти.

Большинство примеров, когда с данными дюнами и предложил что-то вроде этого:

library(vegan) 
library(biplot) 
data(dune) 
mod <- rda(dune, scale = TRUE) 
biplot(mod, scaling = 3, type = c("text", "points")) 

Итак, в соответствии с этим я просто должен был бы сказать, текст и точки и R маркировали бы переменные и просто сделать пункты для сайтов , Когда я это делаю, я получаю сообщение об ошибке:

Error in plot.default(x, type = "n", xlim = xlim, ylim = ylim, col = col[1L], : 
    formal argument "type" matched by multiple actual arguments 

Не знаю, как обойти это.

Так следующая стратегия, которую я нашел, чтобы сделать сюжет вручную, как это:

require("vegan") 
data(dune, dune.env) 
mod <- rda(dune, scale = TRUE) 
scl <- 3 ## scaling == 3 
colvec <- c("red2", "green4", "mediumblue") 
plot(mod, type = "n", scaling = scl) 
with(dune.env, points(mod, display = "sites", col = colvec[Use], 
         scaling = scl, pch = 21, bg = colvec[Use])) 
text(mod,display="species", scaling = scl, cex = 0.8, col = "darkcyan") 
with(dune.env, legend("bottomright", legend = levels(Use), bty = "n", 
         col = colvec, pch = 21, pt.bg = colvec)) 

Это прекрасно работает до сих пор, как хорошо, я получаю различные цвета и точки, но теперь стрелки отсутствуют. Таким образом, я обнаружил, что это должно быть исправлено легко, если я просто положить "display="bp" п.н. „R говорит" в текстовой строке Но эта работа либо это не распространяется Everytime я кладу..“:

Error in match.arg(display) : 
    argument "display" is missing, with no default 

Так I'm вид отчаявшихся в настоящее время. Я просмотрел все ответы здесь, и я не понимаю, почему display="bp" и type=c("text","points") не работает для меня.

Если кто-то есть идея я бы супер благодарен. https://www.dropbox.com/sh/y8xzq0bs6mus727/AADmasrXxUp6JTTHN5Gr9eufa?dl=0 Это ссылка моя папка с папками, содержащая мой R-скрипт и файлы csv. В названии environmentvariables_Kon1 также содержатся данные о севере и юге thside.

Так что да ... если бы кто-нибудь мог мне помочь. Это было бы круто. Я действительно не знаю, что делать дальше.

С наилучшими пожеланиями, Нэнси

ответ

0

Вы можете добавить стрелки с arrows(). См. Код для vegan:::biplot.rda, чтобы узнать, как он работает в исходной функции.

С вашего участка, добавьте

g <- scores(mod, display = "species") 
len <- 1 
arrows(0, 0, len * g[, 1], len * g[, 2], length = 0.05, col = "darkcyan") 

enter image description here

Вы можете настроить значение Len, чтобы стрелки больше

Смежные вопросы