2012-05-10 1 views
1

я сюжет здесь дорожит более длины для хромосомыРазброс участка лесс линия, лесс не показывать линию в данной области

enter image description here

Средней область без точек не содержит данных и не должен получить лесс линия. Как я могу изменить свой код, чтобы остановить лессовую линию над этим регионом? Данные непрерывные, но я мог бы добавить строки, чтобы отметить пробел с некоторым специальным значением или добавить столбец с меткой? но как использовать это в команде?

моя текущая команда:

library(IDPmisc) 

# plot settings (edit here) 
spanv<-0.05 
pointcol1="#E69F00" 
pointcol2="#56B4E9" 
pointcol3="#009E73" 
points=20 
linecol="green" 
xlabs=paste(onechr, " position", " (loess-span=", spanv, ")", sep="") 

data1<-NaRV.omit(data[,c(2,7)]) # keep only x and y for the relevant data 
           # and clean NA and Inf 
ylabs='E/A - ratio' 
p1<-ggplot(data1, aes(x=start, y=E.R)) + 
ylim(0,5) + 
geom_point(shape=points, col=pointcol1, na.rm=T) + 
geom_hline(aes(yintercept=1, col=linecol)) + 
geom_smooth(method="loess", span=spanv, fullrange=F, se=T, na.rm=T) + 
xlab(xlabs) + 
ylab(ylabs) 

ответ

5

Я хотел бы сделать один из двух вещей:

  1. Проделайте loess() установки вне ggplot(), предсказать для двух регионов по отдельности и добавить каждый набор предсказаний участок с собственным слоем geom_line().
  2. Как указано выше, но на этот раз в пределах ggplot() царство операций. Добавьте два слоя к графику, а не один, оба с использованием geom_smooth(), но важно изменить аргумент data, предоставленный каждому, чтобы ссылаться только на одну или другую часть данных.

Для последнего, возможно, что-то вроде:

.... 
geom_smooth(data = data[1:n, ], method="loess", span=spanv, fullrange=FALSE, 
      se=TRUE, na.rm=TRUE) + 
geom_smooth(data = data[m:k, ], method="loess", span=spanv, fullrange=FALSE, 
      se=TRUE, na.rm=TRUE) 
.... 

где n и m и k относятся к показателям, которые отмечают конец набора 1 и начало и конец набора 2 и которые должны быть определенными или предоставленными вами напрямую.

+0

большое спасибо за ответ. Я попробую это (второй выглядит лучше) – splaisan

+0

Первый приятнее, поскольку он включает только 1 вызов 'loess()' и наиболее точно следует за исходным изображением, которое вы показываете. Для отдельных объектов 'data' в' geom_smooth() 'следует понимать, что второй LOESS не должен быть таким же, как и приведение для LOESS, применяемого к полному набору данных (краевые эффекты и т. Д.). Вариант 1 предпочтительнее моего разума, так как это должна быть ** та же ** модель, что и «ggplot()», вы просто рисуете нужные вам биты. –

+1

@splaisan На ум приходит третий вариант. Сделайте как вариант 1, но предскажите для всего диапазона данных. Затем установите любые точки в «пробеле» на «NA». Затем нарисуйте предсказанный вектор точек в одном слое. Это был бы еще один идеальный способ для выбора до выбора вариантов. –

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