geom_xspline: смещение положения для перекрывающихся линий

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

test <-  data.frame(treatment_group = as_factor(c("control",
                                                 "Fgf8+_wk3-wk4",
                                                 "Fgf8+_wk3-wk5",
                                                 "Fgf8+_wk3-wk7")),
                    ACTB = c(1.00,1.12,7.07,0.74),
                    GAPDH = c(1.00,1.15,7.38,0.83),
                    AVERAGE = c(1.00,1.10,7.22,0.78)
                   )                                                                            

Использование geom_xspline, как предложено здесь, работает хорошо, однако в этом конкретном случае линии почти полностью совпадают в нескольких точках.

ggplot(df, 
         aes(x = treatment_group, y = value, 
                group = relative_to, colour = relative_to)) + 
  geom_point() +
  geom_xspline(aes(x = treatment_group, y = value, 
                   group = relative_to, color = relative_to), 
               spline_shape = -0.5, 
               size = 0.5) +
  theme_minimal()

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

Попытка сместить точки и сплайн приводит к странным результатам, и я не могу понять, как это исправить:

  ggplot(test, 
         aes(x = treatment_group, y = value, 
                group = relative_to, colour = relative_to)) + 
  geom_point(position = position_dodge(preserve = "total",  width = 0.5)) +
  geom_xspline(aes(x = treatment_group, y = value, 
                    group = relative_to, color = relative_to), 
               # rep_ends = TRUE, 
               spline_shape = -0.5, 
               df = 4,
               size = 0.5, 
               all_knots = TRUE,
               position = position_dodge(preserve = "total", width = 0.5)) +
              
               #  spar = 0.1, tol = 1
  theme_minimal()

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

Я пробовал другие настройки position(), но ни один из них не избавляет от зубчатой ​​линии в первом сегменте. Любые подсказки приветствуются.

position = position_jitterdodge(dodge.width = 0.25)) +
position = position_stack(vjust = 0.1)) +

person gaelgarcia    schedule 02.08.2021    source источник