2016-11-01 10 views
0

Я создал следующий сюжет:Draw сглаженные линии в ggplot2 в YAxis вместо Xaxis

Данные:

lat<-c(37.30,37.30,37.30,37.30,69.25,69.25,37.30,0.00,0.00,37.30,37.30,37.30,37.30,-75.00,-75.00,70.00,25.30,25.30,37.30,45.00,46.75,-49.00,-49.00,-49.00,58.50,-37.00,37.30,37.30,37.30,37.30,69.25,69.25,37.30,0.00,0.00,37.30,37.30,37.30,37.30,-75.00,-75.00,70.00,25.30,25.30,37.30,-49.00,-49.00,-49.00,16.10,-9.12,50.00,30.00) 
    prop<-c(64, 62, 38, 37, 50, 30, 27, 10, 25, 39, 25, 6, 5, 25, 47, 24, 20, 2, 62, 40, 48, 60, 20, 40, 66, 57, 14, 25, 11, 0, 3, 5, 0, 0, 0, 14, 10, 11, 9, 1, 1, 34, 20, 90, 0, 0, 0, 0, 4, 5, 85, 6) 
    group<-c("gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","gnc","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr","mr") 
    mydata<-data.frame(lat,prop,group) 

График:

library(ggplot2) 
    library(scales) 

    ggplot(data=mydata,aes(x=lat,y=prop,colour=group))+ 
    geom_point(size=2.3) + 
    stat_smooth(span=0.75,n=26,method="loess",aes(fill=group)) + 
    theme_bw()+ 
    theme(
     panel.grid.minor=element_blank(), 
     panel.grid.major=element_blank(), 
     legend.position=c(0.15,0.85), 
     legend.title=element_blank(), 
     axis.text=element_text(size=17), 
     axis.title=element_text(size=19), 
     legend.text=element_text(size=17) 
    )+ 
    scale_y_continuous(limit=c(0,NA),oob=squish)+ 
    scale_x_continuous(limit=c(-70,70),oob=squish,breaks=c(-60,-30,0,30,60)) 

Однако это не окончательный сюжет, который я хочу. Я хотел бы сохранить выход из лессовых регрессий, как показано на графике выше, но представить график с помощью prop по оси x и lat по оси y. Я знаю, что для статистики правильным является сохранение зависимой переменной (т. Е. Prop) по оси y, но моя независимая переменная (т.е. lat) представляет собой Локатор, и было бы интересно показать широту в вертикальном положении (y -ось).

Если я просто изменил следующую строку кода, указав, что x = prop и y = lat, мои лессовые регрессии будут уважать это утверждение и не будут давать желаемого соответствия (т. Е. Prop как функция lat).

ggplot(data=mydata,aes(x=prop,y=lat,colour=group))+ 

Любые идеи о том, как точно воспроизвести сюжет выше (то есть, сохраняя лессовых регрессии, как они есть), но с опорой на оси х и ш в у-оси?

+3

попробуйте добавить 'coord_flip()' в конце вашего 'ggplot()' называют – mtoto

+0

Возможные дубликат [ ggplot2: geom \ _smooth select наблюдения соединений (эквивалентность geom \ _path())] (http://stackoverflow.com/questions/39476914/ggplot2-geom-smooth-select-observations-connections-equivalence-to-geom-path) – Axeman

ответ

0

Хотя stat_smooth не имеет средств для этого, вы можете просто использовать coord_flip, чтобы получить то, что вы хотите. Вы по существу строите сюжет, который хотите, и переворачиваете вокруг оси x и y. В следующем примере gg является ggplot2 объект, представляющий код ggplot вы предоставили:

gg + coord_flip() 

enter image description here

+0

Спасибо, что работает отлично! – Suzana

+0

Если это ответит на ваш вопрос, вы можете принять его, нажав на зеленую метку чуть ниже счетчика вверх/вниз, рядом с моим ответом. –

+0

Я сделал это, и в нем говорится, что мой голос записан, но не появляется здесь, потому что у меня недостаточно репутации, извините. – Suzana