ggplot / plotly를 사용하여 3D로 여러 시계열 라인 플로팅

Nov 16 2020

x 축은 시간을 나타내고 Y 축은 모든 선에 대한 표준화 된 값을 나타내고 Z 축은 각 선을 나타내는 3D로 플로팅하려는 여러 시계열 신호를 포함하는 데이터 프레임이 있습니다. . 여기 제가 의미하는 바의 예가 있습니다.

올바르게 출력하도록 지금 구성하려는 코드 스 니펫이 있지만 y 및 z 변수를 올바르게 할당하는 방법을 잘 모르겠습니다. df에는 5 개의 열이 있습니다. 시간 + 4 개의 다른 시계열 신호.

plot_ly(
  data = df,
  x = df$Time,
  y = scale(df),
  z = names(df),
  type = 'scatter3d',
  mode = 'lines',
  color = c('red', 'blue', 'yellow', 'green'))

Dataframe은 다음과 같습니다.

      Time       coup.nu          Coup.nuti       coup.Ca       coup.B
1  198.001  0.0002630826       0.0003027965  2.141347e-07            1
2  198.002  0.0002630829       0.0003027953  2.141379e-07            1
3  198.003  0.0002630833       0.0003027940  2.141412e-07            1
4  198.004  0.0002630836       0.0003027928  2.141444e-07            1
5  198.005  0.0002630840       0.0003027916  2.141477e-07            1

렌더링을 수행하기 위해 plotly 또는 ggplot을 사용하려고합니다. 도와 주셔서 감사합니다!

나는 이것을 출처 : https://www.r-bloggers.com/2016/06/3d-density-plot-in-r-with-plotly/

답변

ismirsehregal Nov 18 2020 at 08:19

이와 같은 경우에는 예를 들어 melt다음을 사용하여 데이터를 와이드에서 롱으로 다시 포맷해야합니다 .

library(plotly)
library(reshape2)

DF <- data.frame(
        Time = c(198.001, 198.002, 198.003, 198.004, 198.005),
     coup.nu = c(0.000263083,0.000263083,0.000263083, 0.000263084,0.000263084),
   Coup.nuti = c(0.000302797,0.000302795,0.000302794, 0.000302793,0.000302792),
     coup.Ca = c(2.14e-07, 2.14e-07, 2.14e-07, 2.14e-07, 2.14e-07),
      coup.B = c(1L, 1L, 1L, 1L, 1L)
)
DF_long <- melt(DF, id.vars=c("Time"))

plot_ly(
  data = DF_long,
  type = 'scatter3d',
  mode = 'lines',
  x = ~ Time,
  y = ~ value,
  z = ~ variable,
  color = ~ variable,
  colors = c('red', 'blue', 'yellow', 'green'))

재구성을 피하려면 데이터의 각 열에 대해 새 추적을 추가하는 데 data.frame사용할 add_trace수 있습니다.