将平滑线添加到绘图图表

Posted

技术标签:

【中文标题】将平滑线添加到绘图图表【英文标题】:Adding a smoothed line to a plotly chart 【发布时间】:2021-12-30 09:42:57 【问题描述】:

我有一个散点图,我想在点之间添加一条平滑的连接线。我可以毫无问题地使用 ggplot 和 plotly 包装器来做到这一点:

library(tidyverse)
library(plotly)

dat <- 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 %>% 
  ggplot(aes(x = x, y = y)) +
  geom_point() +
  geom_line())

但是,我想使用原生的情节语法来做到这一点。但是,当我尝试这样做时,我得到以下信息。谁能告诉我我的代码有什么问题?

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

【问题讨论】:

我的回答的最后一部分可能会帮助您解决问题 【参考方案1】:

您可以尝试使用geom_smooth 而不是geom_line

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

或者如果你真的想使用geom_line。你可以使用spline

spline_int <- as.data.frame(spline(dat$x, dat$y))

ggplotly(dat %>% 
           ggplot(aes(x = x, y = y)) +
           geom_point() +
           geom_line(data = spline_int, aes(x = x, y = y)))

如果你想单独使用plotly,你可以在线条上添加一个形状

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

【讨论】:

以上是关于将平滑线添加到绘图图表的主要内容,如果未能解决你的问题,请参考以下文章

使用闪亮动态地将绘图添加到网页

用于手指触摸绘图的 UIBezierPath 平滑曲线

Py之matplotlib:matplotlib库图表绘制中常规设置大全(交互模式清除原有图像设置横坐标显示文字/旋转角度添加图例绘图布局自动调整图像显示图像暂停)

R语言低级绘图函数-axis

熊猫数据框绘图

如何向已经存在的绘图图形添加颜色条?