一次添加一列来创建图就可以了
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/