2014-10-24 5 views
3

Я пытаюсь изменить оси на своем графике NMDS, чтобы увеличить масштаб, на котором отображаются мои объекты. Я предполагаю, что пространство, выбранное в произведении точек вида, которое я не построил. Я пробовал добавить xlim к моему коду безрезультатно и задавался вопросом, есть ли у меня это в неправильном месте или если требуется другое действие. Ниже приведена копия моего кода.Осевые оси в R с графиком NMDS

#NMDS on pooled abundance with NA's omitted 
NMDS_HPA<-metaMDS(HP_Abundance_omit[,-1],k=2, trymax=1000) 
plot(NMDS_HPA, type="n", display="sites", xlim=c(-1.5,1.5)) 
with(descriptors, levels(T)) 
colorvec<-c("seagreen4", "tan4", "mediumblue") 
plot(NMDS_HPA, type="n", xlim=c(-1.5,1.5)) 
title(main="NMDS using Abundance with Bray-Curtis", sub="Habitats Pooled") 
ordihull(NMDS_HPA, groups=treat, draw="polygon", col="grey90", label=F) 
with(descriptors, points(NMDS_HPA, display="sites", col=colorvec[T], pch=21, bg=colorvec[T])) 
with(descriptors, legend("topright", legend=levels(T), bty="n", col=colorvec, pch=21, pt.bg=colorvec)) 

Благодаря

+0

Если вы можете создать простой, воспроизводимый пример, вы получите ответ очень быстро. – jbaums

+0

Это * не * вне темы. Иногда я задаюсь вопросом о некоторых людях здесь ... –

ответ

1

Если вы не установите ylim тоже, то веганский не имеет выбора, кроме как показать больше (или меньше) на оси х, чем вы хотите, потому что масштабирование ось должна быть сохранена; изменение единицы вдоль одной оси должно совпадать с одним и тем же изменением единицы вдоль другого. В противном случае, как бы вы знали, как представлять евклидовы расстояния (легко) на фигуре? Поскольку предполагается, что эти евклидовы расстояния отражают ранговое упорядочение исходных различий, важно поддерживать соотношение сторон или относительное масштабирование осей друг к другу.

Вы можете увидеть это в действии, просто используя мышь, чтобы изменить масштаб окна устройства на экране. R replots фигуру, используя различные пределы оси все время для того, чтобы поддерживать соотношение сторон 1.

Рассмотрим этот пример: воспроизводимый

library("vegan") 
data(dune) 

set.seed(56) 
sol <- metaMDS(dune) 

Выбор раздела в обоих осей х и у работы, как и ожидалось

## zoom in on the section (-0.5,0.5)(-0.5,0.5) 
plot(sol, xlim = c(-0.5, 0.5), ylim = c(-0.5,0.5)) 

enter image description here

Если вы хотите сохранить полную ось у, но показывают только сказать, средний 50% от х оси п вы есть построить на устройстве которого width составляет ~ 50%, что в height (приблизительно, потому что по умолчанию R является использование различных полей размера на верхний/нижний левый/правый края.)

png("~/mds-zoom2.png", height = 700, width = 350, res = 100, pointsize = 16) 
plot(sol, xlim = c(-0.5, 0.5)) 
dev.off() 

который производит

enter image description here

Это почти правильно. Вы могли бы решить проблему точно, установив равные поля по графику, используя par(mar = rep(4, 4) + 0.1), а затем выработайте соотношение диапазона баллов по осям x и y (получите scores(sol) и вычислите range() на обоих столбцах, затем вычислите соотношение два диапазона), затем используйте это, чтобы дать вам желаемую высоту графика для ширины, которую вы хотите указать.

0

Если вы просто нанесены точки, а не объект NMDS чем xlim работает просто отлично

plot(NMDS_HPA$points, xlim=c(-1.5,1.5)) 
Смежные вопросы