在for循环中构建plotly图表不显示所有系列

时间:2017-04-05 16:49:02

标签: r plotly

通过一次添加一列来创建绘图就可以了。

exPlot <- plot_ly(data.table(matrix(1:9,ncol = 3)))
theCols <- c("V2","V3")
exPlot <- exPlot %>% add_lines(x = ~V1, y = ~get(theCols[1]), type = "scatter",mode = "lines")
exPlot <- exPlot %>% add_lines(x = ~V1, y = ~get(theCols[2]), type = "scatter",mode = "lines")
exPlot

但是如果我尝试在for循环中做同样的事情,它只显示第二个跟踪,覆盖第一个跟踪。

exPlot <- plot_ly(data.table(matrix(1:9,ncol = 3)))
theCols <- c("V2","V3")
for(i in 1:2){
  exPlot <- exPlot %>% add_lines(x = ~V1, y = ~get(theCols[i]), type = "scatter",mode = "lines")
}
exPlot

有什么方法可以解决这个问题吗?我环顾了一下,设置“evaluate = TRUE”曾经是答案,但这似乎已被弃用。

1 个答案:

答案 0 :(得分:3)

原因打败了我,但你要求以任何方式解决这个问题。

不是一次传递整个data.table,而是可以在循环中指定所需的y值,它应该可以工作。

df <- data.table(matrix(1:9,ncol = 3))
exPlot <- plot_ly(df[[1]])
theCols <- c("V2","V3")
for(i in 1:2){
  exPlot <- add_lines(exPlot,
                      y = df[[theCols[i]]],
                      type = "scatter",
                      mode = "lines")
}
exPlot