使用add_trace将多行添加到plot_ly图形中

时间:2016-08-08 12:10:06

标签: r plotly

我找到了一个使用plot_ly命令向add_trace图添加行的示例。如何在不多次使用add_trace的情况下添加要绘制的行列表?

我尝试了for循环来添加跟踪,但这不能按预期工作。

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

但是这例如符合预期。

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

希望有人能给我一个暗示。

3 个答案:

答案 0 :(得分:6)

我相信释放$(".animateHeight").bind("click", function(e){ $(".test").animateAuto("height", 1000); }); $(".animateWidth").bind("click", function(e){ $(".test").animateAuto("width", 1000); }); $(".animateBoth").bind("click", function(e){ $(".test").animateAuto("both", 1000); }); 会调用任何plotly 4.0系列函数强制进行评估,因此无需再调用add_*

所以,这样的事情应该可以正常工作:

evaluate = T

enter image description here

答案 1 :(得分:3)

您需要设置evaluate = TRUE以强制进行评估/避免延迟评估

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

答案 2 :(得分:1)

您可以先将输入转换为长格式的数据框,然后使用split参数进行绘制。

library(plotly)
library(reshape2)

my_lines = data.frame(x = 1:10, red = 2:11, blue = 0:9, green = 3:12)
my_lines_long = reshape2::melt(my_lines, id.vars = "x")
fig = plotly::plot_ly(my_lines_long, x = ~x, y = ~value, split = ~variable,
                      marker=list(color=~variable))
fig