簡體   English   中英

plotly R 中的多行不使用 add_trace

[英]Multiple lines in plotly R not using add_trace

我有這樣的數據:

> data_example
          date   A   B   C   D   E   F
1   2020-09-22 1.3 0.0 1.3 0.3 0.9 0.0
2   2020-09-23 0.7 0.0 0.7 0.0 0.7 0.0
3   2020-09-24 0.4 0.0 0.4 0.0 0.4 0.0
4   2020-09-25 0.2 0.2 0.5 0.0 0.2 0.0
5   2020-09-26 1.0 0.0 1.0 0.0 1.0 0.0
6   2020-09-27 0.2 0.2 0.5 0.1 0.1 0.0
7   2020-09-28 0.6 0.1 0.7 0.0 0.6 0.0
8   2020-09-29 0.4 0.1 0.5 0.1 0.2 0.0
9   2020-09-30 0.4 0.1 0.6 0.0 0.4 0.0
10  2020-10-01 1.0 0.1 1.1 0.8 0.1 0.0
11  2020-10-02 0.6 0.1 0.8 0.2 0.4 0.0

我想繪制超過在同一時間序列圖中的一列(A,B,C ...),沒有使用add_trace。 原因是我正在構建一個 Shiny 應用程序,用戶可以在其中動態選擇,使用 selectize 輸入,哪些變量要繪制,因此要動態執行,必須不要采用 add_trace 方式。

有沒有另一種方法來實現這一目標?

謝謝。

編輯:

dput(data_example) 的輸出

data_example <- structure(list(date = c("2020-09-22", "2020-09-23", "2020-09-24", 
"2020-09-25", "2020-09-26", "2020-09-27", "2020-09-28", "2020-09-29", 
"2020-09-30", "2020-10-01", "2020-10-02"), A = c(1.3, 0.7, 0.4, 
0.2, 1, 0.2, 0.6, 0.4, 0.4, 1, 0.6), B = c(0, 0, 0, 0.2, 0, 0.2, 
0.1, 0.1, 0.1, 0.1, 0.1), C = c(1.3, 0.7, 0.4, 0.5, 1, 0.5, 0.7, 
0.5, 0.6, 1.1, 0.8), D = c(0.3, 0, 0, 0, 0, 0.1, 0, 0.1, 0, 0.8, 
0.2), E = c(0.9, 0.7, 0.4, 0.2, 1, 0.1, 0.6, 0.2, 0.4, 0.1, 0.4
), F = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), class = "data.frame", row.names = c(NA, 
-11L))

您應該將data.frame重塑為長格式。

library(data.table)我更喜歡library(data.table) - 請參閱melt調用。 之后,您可以使用splitcolor來生成跟蹤:

library(data.table)
library(plotly)

DF <- data.frame(
  date = c("2020-09-22","2020-09-23","2020-09-24",
           "2020-09-25","2020-09-26","2020-09-27","2020-09-28",
           "2020-09-29","2020-09-30","2020-10-01","2020-10-02"),
  A = c(1.3, 0.7, 0.4, 0.2, 1, 0.2, 0.6, 0.4, 0.4, 1, 0.6),
  B = c(0, 0, 0, 0.2, 0, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1),
  C = c(1.3, 0.7, 0.4, 0.5, 1, 0.5, 0.7, 0.5, 0.6, 1.1, 0.8),
  D = c(0.3, 0, 0, 0, 0, 0.1, 0, 0.1, 0, 0.8, 0.2),
  E = c(0.9, 0.7, 0.4, 0.2, 1, 0.1, 0.6, 0.2, 0.4, 0.1, 0.4),
  F = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
)

setDT(DF)

longDF <- melt(DF, id.vars = "date")

plot_ly(longDF, type = "scatter", mode = "lines+markers", x = ~date, y = ~value, split = ~variable)

結果

暫無
暫無

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

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