2014-09-09 3 views
3

Я рисую появление вида по многочисленным переменным на одном и том же участке. Есть много других переменных, но я только сохранил важные для этой должности:несколько линий линейной регрессии ggplot

> str(GH) 
'data.frame': 288 obs. of 21 variables: 
$ Ee  : int 2 2 1 7 6 3 0 9 3 7 ... 
$ height : num 14 25.5 25 21.5 18.5 36 18 31.5 28.5 19 ... 
$ legumes : num 0 0 55 30 0 0 55 10 30 0 ... 
$ grass : num 60 50 30 35 40 35 40 40 35 30 ... 
$ forbs : num 40 70 40 50 65 70 40 65 70 70 ... 

мне удалось построить этот штраф и получить его смотреть приятно, используя (где Ee является видом в вопросе):

ggplot(data=GH,aes(y=y,x=x),ylab="Number of individuals (N)",xlab="Percentage cover (%); OR Height(cm))+ 
geom_jitter(aes(legumes,Ee),colour="blue")+ 
geom_jitter(aes(grass,Ee),colour="green")+ 
geom_jitter(aes(forbs,Ee),colour="red")+ 
geom_jitter(aes(height,Ee),colour="black") 

Однако, я хочу, чтобы добавить линии регрессии для каждого из переменных (и вычислить R значения квадрата), и не имел никакой удачи до сих пор. Также метки осей отказываются меняться от X и Y, с которыми я никогда не сталкивался раньше. Может ли кто-нибудь помочь мне в этом? Cheers

+0

Вы, кажется, пытается обозначить 'ggplot' как базовую графику. Это не сработает. Попробуйте '+ labs (x =" Процентное покрытие (%) ", y =" Количество людей (N) ")' – Gregor

ответ

7

Использование geom_smooth geom in ggplot2 получает линии регрессии для отображения. Я использую mtcars набор данных, как это очень похоже на ваш:

ggplot(mtcars) + 
    geom_jitter(aes(disp,mpg), colour="blue") + geom_smooth(aes(disp,mpg), method=lm, se=FALSE) + 
    geom_jitter(aes(hp,mpg), colour="green") + geom_smooth(aes(hp,mpg), method=lm, se=FALSE) + 
    geom_jitter(aes(qsec,mpg), colour="red") + geom_smooth(aes(qsec,mpg), method=lm, se=FALSE) + 
    labs(x = "Percentage cover (%)", y = "Number of individuals (N)") 

Кроме того, я удалил aes(y=y,x=x) из ggplot, как это не несет никакого смысла. Результат:

enter image description here

Существует более сложный (но лучше смотреть) способ сделать то же самое с помощью melt из reshape2 пакета:

require(ggplot2) 
require(reshape2) 
mtcars2 = melt(mtcars, id.vars='mpg') 
ggplot(mtcars2) + 
    geom_jitter(aes(value,mpg, colour=variable),) + geom_smooth(aes(value,mpg, colour=variable), method=lm, se=FALSE) + 
    facet_wrap(~variable, scales="free_x") + 
    labs(x = "Percentage cover (%)", y = "Number of individuals (N)") 

Одним из важных элементов этого решения опция scales="free_x", что позволяет независимая шкала X по каждому фасетному сюжету.

enter image description here

+0

Отлично! Это именно то, что я хотел сделать! Благодарю. Первый раз играл с ggplot. Вы знаете, как я могу добавить значения R sq. К каждой из строк? У меня есть значения, используя: Eeleg <-lm (Ee ~ legumes) и т. Д., Но я хотел бы разместить их на графике – user25002

+0

в одну сторону: http://stackoverflow.com/a/7549819/59470 – topchef

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