6

Creating a plot by adding one column at a time works just fine

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

but if I try to do the same thing in a for loop, it only displays the second trace, overwriting the first one.

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

Any way to get around this? I looked around a bit, and setting "evaluate = TRUE" used to be the answer, but that seems to have been deprecated.

1
  • Has something to do with the lazy eval of plotly, based on some light googling, there used be an argument evaluate = T, but it seems to have been deprecated? Commented Apr 5, 2017 at 17:08

1 Answer 1

5

The reason beats me but you are asking for 'any way to get around this'.

Instead of passing the whole data.table at once, you could specify the required y-values in the loop and it should work.

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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.