编辑:
我刚刚看到您指出您的维度之一是日期。在这种情况下,have a look at Jeff Ryan's chartSeries3d 旨在绘制 3 维时间序列。在这里,他展示了一段时间内的收益率曲线:
原答案:
据我了解,您希望计数地图成为 3D 曲面图下方平面上的投影。除了创建两个情节然后将它们组合起来之外,我认为没有其他简单的方法可以做到这一点。你可以find the spatial view helpful for this。
3D 绘图有两个主要的 R 包:rgl(或者您可以使用相关的misc3d 包)和scatterplot3d。
rgl
rgl 包使用 OpenGL 创建交互式 3D 绘图 (read more on the rgl website)。下面是一个使用surface3d 函数的例子:
library(rgl)
data(volcano)
z <- 2 * volcano # Exaggerate the relief
x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N)
y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W)
zlim <- range(z)
zlen <- zlim[2] - zlim[1] + 1
colorlut <- terrain.colors(zlen,alpha=0) # height color lookup table
col <- colorlut[ z-zlim[1]+1 ] # assign colors to heights for each point
open3d()
rgl.surface(x, y, z, color=col, alpha=0.75, back="lines")
alpha 参数使这个表面部分透明。现在您有一个表面的交互式 3D 图,并且您想在下面创建一个计数地图。 rgl 允许您向现有图像添加更多图:
colorlut <- heat.colors(zlen,alpha=1) # use different colors for the contour map
col <- colorlut[ z-zlim[1]+1 ]
rgl.surface(x, y, matrix(1, nrow(z), ncol(z)),color=col, back="fill")
在这个表面上,我设置了 heights=1 以便我们在另一个表面下方有一个平面。这最终看起来像这样,并且可以用鼠标旋转:
scatterplot3d
scatterplot3d 有点像 R 中的其他绘图函数 (read the vignette)。这是一个简单的例子:
temp <- seq(-pi, 0, length = 50)
x <- c(rep(1, 50) %*% t(cos(temp)))
y <- c(cos(temp) %*% t(sin(temp)))
z <- c(sin(temp) %*% t(sin(temp)))
scatterplot3d(x, y, z, highlight.3d=TRUE,
col.axis="blue", col.grid="lightblue",
main="scatterplot3d - 2", pch=20)
在这种情况下,您需要叠加图像。 R-Wiki has a nice post on creating a tanslucent background image.