drmariod drmariod - 3 months ago 56
R Question

add multiple lines to a plot_ly graph with add_trace

I found an example to add lines to a

plot_ly
plot by using the
add_trace
command. How can I add a list of lines to plot without using
add_trace
multiple times?

I tried a
for
loop to add the traces but this doesn't work as expected.

my_lines <- list(
list(x=1:10, y=2:11, color='red'),
list(x=1:10, y=0:9, color='blue'),
list(x=1:10, y=3:12, color='green')
)
p <- plot_ly()
p
for(line in my_lines) { p <- add_trace(p, y=line[['y']], x=line[['x']],
marker=list(color=line[['color']]))
}
p


But this for example works as expected.

p <- plot_ly()
p <- add_trace(p, y=my_lines[[1]][['y']], x=my_lines[[1]][['x']],
marker=list(color=my_lines[[1]][['color']]))
p <- add_trace(p, y=my_lines[[2]][['y']], x=my_lines[[2]][['x']],
marker=list(color=my_lines[[2]][['color']]))
p <- add_trace(p, y=my_lines[[3]][['y']], x=my_lines[[3]][['x']],
marker=list(color=my_lines[[3]][['color']]))
p


Hope somebody can give me a hint on this.

Answer

You need to set evaluate = TRUE to force evalutation / avoid lazy evaluation

p <- plot_ly()
p
for(line in my_lines) {  p <- add_trace(p, y=line[['y']], x=line[['x']], 
                 marker=list(color=line[['color']]),
                 evaluate = TRUE)
}
p
Comments