从R中的时间序列数据制作3D曲面

问题描述

| 我有一个很大的数据集,我想以此为基础制作3D曲面。我希望x轴是日期,y轴是时间(24h),z轴(高度)是我拥有的值($)。我是R的初学者,所以越简单越好! http://www.quantmod.com/examples/chartSeries3d/有一个很好的例子,但是对于我的技能水平来说,代码是复杂的! 任何帮助将不胜感激-到目前为止,我研究过的任何事情都需要对数据进行排序,这我认为不合适。     

解决方法

        options0ѭ和
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()
需要数据作为
x
y
网格位置以及观测矩阵
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\"
类的对象(因此将其转换为数字)。