r - 从 R 中的时间序列数据制作 3D 表面

标签 r 3d geometry-surface

我有一个大型数据集,我想从中制作 3D 表面。我希望 x 轴是日期,y 轴是时间(24 小时),z 轴(高度)是我拥有的值($)。我是R的初学者,所以越简单越好!

http://www.quantmod.com/examples/chartSeries3d/有一个很好的例子,但代码对我的技能水平来说太复杂了!

任何帮助将不胜感激 - 到目前为止我研究过的任何内容都需要对数据进行排序,我认为这不合适。

最佳答案

有几个选项,persp()wireframe(),后者在 lattice 包中。

首先是一些虚拟数据:

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" 类的对象时刻(因此转换为数字)。

关于r - 从 R 中的时间序列数据制作 3D 表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432996/

相关文章:

r - 找出一组数字的所有组合,这些数字加起来等于某个总数

c++ - 计算 3d 中线段之间的垂直距离和角度距离

math - 同一平面内具有相同原点的两个 3D 向量之间的符号角

Python 和 Pygame : Avoiding creating display surface twice

c# - 找到点所在的正方形中心

r - 删除具有特定字符串的文本文件中的列

r - 在 ggplot 中的 geom_smooth 中使用跨度的多个值

r - 使用存储在变量中的列名连接数据表

css - 3d元素在css中的定位

java - 如何找到矩形的角像素?