Нарисуйте сглаженные линии в ggplot2 по оси Y вместо оси X

Я создал следующий сюжет:

Данные:

    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))

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

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

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

Любые идеи о том, как точно воспроизвести приведенный выше график (т.е. сохранить лёссовые регрессии такими, какие они есть), но с опорой по оси x и широтой по оси y?


person Suzana    schedule 01.11.2016    source источник
comment
попробуйте добавить coord_flip() в конце вашего ggplot() вызова   -  person mtoto    schedule 01.11.2016
comment


Ответы (1)


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

gg + coord_flip()

введите здесь описание изображения

person Paul Hiemstra    schedule 01.11.2016
comment
Если это отвечает на ваш вопрос, вы можете принять его, щелкнув зеленую галочку чуть ниже счетчика голосов за/против рядом с моим ответом. - person Paul Hiemstra; 02.11.2016
comment
Я сделал это, и он говорит, что мой голос записан, но не отображается здесь, потому что у меня недостаточно репутации, извините. - person Suzana; 03.11.2016
comment
Это правда, что вы не можете проголосовать из-за своей ограниченной репутации, но как задающий вопрос вы всегда можете определить, какой из полученных вами ответов является правильным. Чуть ниже моих стрелок вверх/вниз должна быть галочка, которая не имеет цвета заливки. Нажав на него, он станет зеленым и сигнализирует о том, что вы принимаете мой ответ. - person Paul Hiemstra; 03.11.2016