如何使用原生Plotly语法为散点图添加平滑连接线
问题原因
你的原生Plotly代码出现异常连线的核心原因是:
- ggplot2的
geom_line默认会自动按x轴数值升序排序后再连接对应数据点,所以输出的线是符合x轴从小到大的逻辑的 - Plotly原生的线图默认严格按照数据框的行顺序连接数据点,你当前的数据集里x列是乱序排布的,直接连线就会出现交叉错乱的效果
修正代码
先对数据集按x列升序排序后再绘图即可对齐ggplot+ggplotly的效果:
library(tidyverse) library(plotly) dat %>% # 核心步骤:按x值升序排序,保证连线逻辑和ggplot2一致 arrange(x) %>% plot_ly(x = ~x, y = ~y) %>% add_trace(type = "scatter", mode = "markers", name = "数据点") %>% add_trace(mode = "lines", name = "连接线")
如果需要实现你说的平滑连接线效果,可以再加线条平滑参数:
dat %>% arrange(x) %>% plot_ly(x = ~x, y = ~y) %>% add_trace(type = "scatter", mode = "markers", name = "数据点") %>% add_trace(mode = "lines", name = "平滑连接线", line = list(shape = "spline", smoothing = 0.4))
调整smoothing参数的数值(0~1区间)可以修改平滑程度,数值越大曲线越平滑。
内容的提问来源于stack exchange,提问作者DJC
相关产品推荐
相关产品推荐

