Как построить кривую линию между точками

Я ищу функцию, позволяющую мне рисовать кривую между моими точками. На самом деле, мои данные представляют собой профиль концентрации элемента (здесь азота), и мне нужно построить пунктирную линию, изогнутую между точками. Итак, вот изображение того, что я хочу сделать с R (я сделал этот профиль с помощью Excel

library(ggplot2)
Sample <- c(-1, -3, -5, -7, -9, -11, -13, -15, -17, -19, -21, -23, -25, -27, 
            -29, -31, -33, -35, -37)
N <- c(0.14, 0.16, 0.09, 0.09, 0.011, 0.09, 0.10, 0.09, 0.11, 0.11, 0.09, 0.09,
       0.05, 0.09, 0.09, 0.10, 0.11, 0.11, 0.11)
tab <- data.frame(N, Sample)
ggplot(tab,  aes(x=N,  y=Sample,  c(0, 0.16)), pch=17) + 
  geom_path(linetype=3, color='#2980B9',  size = 0.1) +
  geom_point(color='#2980B9',  size = 2) +
  scale_x_continuous(position = "top",  limits=c(0, 0.16)) +
  scale_y_continuous(limits=c(-40, 0))

и вот график, который я получаю

Не могли ли вы помочь мне, пожалуйста?


person Nico    schedule 25.03.2018    source источник
comment
Разве 5-й элемент N не должен быть 0.11? Теперь это 0.011, что дает странный результат на графике. Проверьте свои данные!   -  person Bhas    schedule 25.03.2018
comment
Возможный дубликат stackoverflow.com/questions/34473292/ - хотя это решение выглядит довольно обширным и заставляет меня поверить, что есть должно быть что-то проще   -  person mysteRious    schedule 25.03.2018
comment
Да, это 0,11, а не 0,011, спасибо.   -  person Nico    schedule 26.03.2018


Ответы (1)


Один из способов получить сглаженные линии вместо прямых — перевернуть x и y в вашей эстетике, затем применить geom_smooth вместо geom_path, а затем перевернуть координаты через coord_flip:

ggplot(tab, aes(x=Sample, y=N, c(0,0.16)),pch=17) + 
coord_flip() + 
geom_point(color='#2980B9', size = 2) + 
geom_smooth(method = "loess", se = FALSE, 
          span = 0.25, linetype=3,color='#2980B9', size = 0.1)

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

person Daniel    schedule 25.03.2018
comment
@nico не забудьте принять ответ, если он решит вашу проблему. - person Mike 'Pomax' Kamermans; 01.04.2018