Добавление сглаженной линии на плотную диаграмму

#r #ggplot2 #plotly

Вопрос:

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

 library(tidyverse) library(plotly)  dat lt;- data.frame(x = c(0.89910345, 0.994439176, 0.881675547, 0.993289873, 0.990991268, 0.980292298, 0.984415918, 0.993125417, 0.990463749, 0.994603633, 0.965500006, 0.990827284, 0.993618787, 0.992961434, 0.938100735, 0.957212413, 0.981905481, 0.993289873, 0.906759406, 0.991483218),  y = c(0.819935601, 0.803471076, 0.820239219, 0.807804144, 0.812154115, 0.815320137, 0.814483142, 0.808271728, 0.812404613, 0.802747176, 0.816710715, 0.812240861, 0.806708415, 0.808695239, 0.818457407, 0.817328889, 0.815076674, 0.807785879, 0.819725289, 0.811638314))  ggplotly(dat %gt;%   ggplot(aes(x = x, y = y))    geom_point()    geom_line())  

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

Однако я хотел бы сделать это, используя собственный синтаксис plotly. Однако, когда я пытаюсь это сделать, я получаю следующее. Кто-нибудь может сказать мне, что не так с моим кодом?

 dat %gt;%   plot_ly(x = ~x,  y = ~y) %gt;%   add_trace(type = "scatter",  mode = "markers") %gt;%   add_trace(mode = "line")  

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

Комментарии:

1. Последняя часть моего ответа может помочь вам решить вашу проблему

Ответ №1:

Вы могли бы попробовать использовать geom_smooth вместо geom_line

 ggplotly(dat %gt;%   ggplot(aes(x = x, y = y))    geom_point()    geom_smooth(method = "loess", se=FALSE, color="black"))  

пример1

или если бы вы действительно хотели использовать geom_line . Вы можете использовать spline

 spline_int lt;- as.data.frame(spline(dat$x, dat$y))  ggplotly(dat %gt;%   ggplot(aes(x = x, y = y))    geom_point()    geom_line(data = spline_int, aes(x = x, y = y)))  

пример2

Если вы хотите использовать только plotly его, вы можете добавить фигуру к линии

 dat %gt;%   plot_ly(x = ~x,  y = ~y) %gt;%   add_trace(type = "scatter",  mode = "markers") %gt;%   add_lines(line = list(shape = "linear"))   

пример3