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
수 있습니다.