通过一次添加一列来创建绘图就可以了。
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”曾经是答案,但这似乎已被弃用。
答案 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