Mar*_*lan 2 3d r geometry-surface
我有一个大型数据集,我想从中制作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))
Run Code Online (Sandbox Code Playgroud)
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))
Run Code Online (Sandbox Code Playgroud)
并可以使用以下方式绘制:
persp(new.dates, new.times, new.values, ticktype = "detailed", r = 10,
theta = 35, scale = FALSE)
Run Code Online (Sandbox Code Playgroud)
可以使用col参数对构面进行着色.你可能比chartSeries3d0()在你链接的页面上研究代码要糟糕得多.大多数代码只是绘制正确的轴,既不容易persp()也不容易wireframe()处理Date对象.
至于wireframe(),我们
require(lattice)
wireframe(Value ~ as.numeric(Dates) + Times, data = dat, drape = TRUE)
Run Code Online (Sandbox Code Playgroud)
你需要做一些工作或工作来整理轴标记,因为此刻wireframe()不能用于类的对象"Date"(因此转换为数字).