一次添加一列来创建图就可以了

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”曾经是答案,但这似乎已被弃用。

最佳答案

原因胜过我,但是您要问“解决这个问题的任何方法”。

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

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

关于r - 在for循环中构建绘图图不会显示所有序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43237136/

10-11 04:30