`add_trace` with `type = 'scatter', mode = 'lines'` works differently from `add_lines`
未关闭
还没有人认领这个 Issue。
- 主要语言
- R
- 星标
- 2.7k
- 派生
- 641
- PR 合并指标
- 30 天内没有已合并 PR
描述
When plotting a regression line with confidence intervals, add_trace with type = 'scatter', mode = 'lines' works differently from add_lines. The latter works while the former fails (see examples).
Looks like add_trace(type = 'scatter', mode = 'lines', ...) attempts to connect datapoints pairwise instead of sequentially.
# load packages
require(dplyr)
require(plotly)
# prep data
setosa <- iris |>
filter(Species == "setosa") |>
mutate(fit = predict(lm(Sepal.Width ~ Sepal.Length), interval = "conf")[, "fit"],
lwr = predict(lm(Sepal.Width ~ Sepal.Length), interval = "conf")[, "lwr"],
upr = predict(lm(Sepal.Width ~ Sepal.Length), interval = "conf")[, "upr"])
## Compare plots ##
# plot 1: add_lines works
plot_ly(data = setosa, x = ~Sepal.Length) |>
add_trace(y = ~Sepal.Width,
type = 'scatter',
mode = 'markers',
showlegend = FALSE) |>
add_lines(y = ~upr, # add_lines works
color = I("#2ca02c"),
name = 'CI upper') |>
add_lines(y = ~lwr, # add_lines works
color = I("#2ca02c"),
alpha = 0.2,
fill = 'tonexty',
name = 'CI lower') |>
add_trace(y = ~fit, # add_trace works
type = 'scatter',
mode = 'lines',
name = 'Predicted')
# plot 2: replaced add_lines with add_trace, no other changes
plot_ly(data = setosa, x = ~Sepal.Length) |>
add_trace(y = ~Sepal.Width,
type = 'scatter',
mode = 'markers',
showlegend = FALSE) |>
add_trace(y = ~upr, # add_trace doesn't work
type = 'scatter',
mode = 'lines',
color = I("#2ca02c"),
name = 'CI upper') |>
add_trace(y = ~lwr, # add_trace doesn't work
type = 'scatter',
mode = 'lines',
color = I("#2ca02c"),
alpha = 0.2,
fill = 'tonexty',
name = 'CI lower') |>
add_trace(y = ~fit, # here add_trace works as it should
type = 'scatter',
mode = 'lines',
name = 'Predicted')
Output
Plot 1:
Plot 2:
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从 R plotting API 中的 add_trace 和 add_lines 入口开始,复现所提供的 iris 回归示例。比较这两个函数如何处理 mode = 'lines' 的散点轨迹,然后验证将 add_lines 替换为 add_trace 会生成相同的连续置信区间线和填充。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- r
- 领域
- data-visualization
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100