2017-02-21 38 views
0

Я генерирую участки привязки NMDS из данных сообщества, используя пакет R, веган и хочу включать векторы (то есть стрелки из начала координат), длины которых соответствуют важности выбранных виды. Как я могу ограничить стрелки, отображаемые только для этих видов, скажем, в верхнем квартиле данных? Я могу рассчитать длины для каждого вектора, но не знаю, как ограничить стрелки, напечатанные на те, которые соответствуют желаемому стандарту. Например,Совместные графики с векторами из подмножества данных

require(vegan) 

data(dune) mds <- metaMDS(dune) plot(mds$points[,1], mds$point[,2]) arrows(0, 0, mds$species[,1], mds$species[,2], col = "grey50")

# for the length of ea arrow for ea sp:

hyp <- sqrt(mds$species[,1]^2 + mds$species[,2]^2)

Благодаря ...

+0

(1) Вы всегда должны использовать 'asp = 1' в координационных участках. Это делается автоматически, если вы используете функции vegan и выдаете 'plot (mds, dis =" site ")', но если вы хотите использовать более громоздкий собственный код, добавьте 'asp = 1'. (2) Гораздо проще использовать 'hyp <- sqrt (rowSums (оценки (mds, dis =" sp ")^2))'. (3) функции вегана 'plot',' text' и 'points' для результата' metaMDS' имеют аргумент 'select', который может использоваться как имя. Однако он не может использоваться для стрелок, но я не могу понять, почему вы использовали стрелки для оценок видов. –

+0

Спасибо, Яри. Я очень ценю информацию, просил и вызвался. Что касается стрелок для видов, то вы правы: в лучшем случае вводя в заблуждение. Я пытался удовлетворить коллегу, даже менее информированного, чем я. Рад, что заставил меня задуматься. –

ответ

0

ImportantSpecies строка определяет, какие точки находятся в верхнем квартиле. Затем вы можете использовать это, как показано для построения только этих точек.

ImportantSpecies = which(hyp > quantile(hyp, 0.75) 

plot(mds$points[ImportantSpecies,1], mds$point[ImportantSpecies,2]) 
arrows(0, 0, mds$species[ImportantSpecies,1], 
      mds$species[ImportantSpecies,2], col = "grey50")