首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R图中跨滑块步骤添加静态元素

在R图中跨滑块步骤添加静态元素
EN

Stack Overflow用户
提问于 2022-07-25 17:26:37
回答 1查看 60关注 0票数 2

我正在给一个关于MLE的教程,并试图弄清楚如何添加一个静态分组点到一个巧妙的图表。很明显,当我滑动正态分布时,你可以看到这些点对应于一个较低或更高的相似点。但是,我只能在第一帧上得到点。

代码语言:javascript
复制
x <- seq(0, 10, length.out = 1000)

aval <- list()
for (step in 1:6) {
  aval[[step]] <- list(
    visible = FALSE,
    name = paste0('v = ', step),
    x = x,
    y = dnorm(x, step+1)
  )
  
}

aval[3][[1]]$visible = TRUE

steps <- list()
fig <- plot_ly()

for (i in 1:6) {
  fig <-
    add_lines(
      fig,
      x = aval[i][[1]]$x,
      y = aval[i][[1]]$y,
      visible = aval[i][[1]]$visible,
      
      name = aval[i][[1]]$name,
      type = 'scatter',
      mode = 'lines',
      hoverinfo = 'name',
      
      line = list(color = '00CED1'),
      showlegend = FALSE
    )

step <- list(args = list('visible', rep(FALSE, length(aval))),method = 'restyle')
  step$args[[2]][i] = TRUE
  steps[[i]] = step
  
}


fig <- fig %>% add_markers(x = c(4.5,5,5.5), y = c(0,0,0))
# add slider control to plot

fig <- fig %>%
  layout(sliders = list(list(
    active = 0,
    currentvalue = list(prefix = "Frequency: "),
    steps = steps
  )))


fig
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-26 14:30:26

你为什么不用花哨的动画功能

但是,无论您是定义自定义步骤还是使用frame参数,都必须为每个步骤提供“静态”点:

代码语言:javascript
复制
library(plotly)
library(data.table)

f <- 1:6
x <- seq(0, 10, length.out = 1000)
y <- unlist(lapply(f+1, dnorm, x = x))

DT <- CJ(f, x) # like expand.grid()
DT[, y := y]
DT[, step := paste0("step-", f)]

staticDT <- CJ(f, x = c(4.5,5,5.5), y = 0)
staticDT[, step := paste0("step-", f)]

fig <- plot_ly(
  data = DT,
  x = ~x,
  y = ~y,
  frame = ~step,
  type = 'scatter',
  mode = 'lines',
  showlegend = FALSE,
  color = I('#00CED1')
)

fig <- add_trace(
  fig,
  data = staticDT,
  x = ~x,
  y = ~y,
  frame = ~step,
  type = 'scatter',
  mode = 'markers',
  showlegend = FALSE,
  color = I('red'),
  inherit = FALSE
)

fig <- animation_opts(
  fig, transition = 0, redraw = FALSE
)

fig <- animation_slider(
  fig, currentvalue = list(prefix = "Frequency: ")
)

fig

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73113147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档