簡體   English   中英

從R中的時間序列數據制作3D表面

[英]Making a 3D surface from time series data in R

我有一個很大的數據集,我想以此為基礎制作3D曲面。 我希望x軸是日期,y軸是時間(24h),z軸(高度)是我擁有的值($)。 我是R的初學者,所以越簡單越好!

http://www.quantmod.com/examples/chartSeries3d/有一個很好的例子,但是對於我的技能水平來說,代碼是復雜的!

任何幫助將不勝感激-到目前為止,我研究過的任何事物都需要對數據進行排序,我認為這不合適。

幾個選項展示自己, persp()wireframe()在包晶格后者。

首先是一些偽數據:

set.seed(3)
dat <- data.frame(Dates = rep(seq(Sys.Date(), Sys.Date() + 9, by = 1), 
                              each = 24),
                  Times = rep(0:23, times = 10),
                  Value = rep(c(0:12,11:1), times = 10) + rnorm(240))

persp()需要將數據作為xy網格位置以及觀察矩陣z

new.dates <- with(dat, sort(unique(Dates)))
new.times <- with(dat, sort(unique(Times)))
new.values <- with(dat, matrix(Value, nrow = 10, ncol = 24, byrow = TRUE))

並可以使用以下方式繪制:

persp(new.dates, new.times, new.values, ticktype = "detailed", r = 10, 
      theta = 35, scale = FALSE)

可以使用col參數為構面着色。 您可能比在您鏈接到的頁面上研究chartSeries3d0()的代碼要糟糕得多。 大多數代碼只是在繪制適當的軸,因為persp()wireframe()都不容易處理Date對象。

至於wireframe() ,我們

require(lattice)
wireframe(Value ~ as.numeric(Dates) + Times, data = dat, drape = TRUE)

您需要做一些工作或整理出軸標簽,因為wireframe()目前不適用於"Date"類的對象(因此將其強制轉換為數字)。

暫無
暫無

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

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