簡體   English   中英

使用 add_trace 將多條線添加到 plot_ly 圖

[英]Add multiple lines to a plot_ly graph with add_trace

我找到了一個使用add_trace命令向plot_ly繪圖添加線條的示例。 如何在不多次使用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

我相信隨着plotly 4.0的發布,調用任何add_*系列函數會強制求值,因此不再需要調用evaluate = T

所以,這樣的事情應該可以正常工作:

devtools::install_github("ropensci/plotly")
library(plotly)

p <- plot_ly()

for(i in 1:5){
  p <- add_trace(p, x = 1:10, y = rnorm(10), mode = "lines")
}

p

在此處輸入圖片說明

您需要設置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

您可以先將輸入轉換為長格式數據框,然后使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM