我有一个三元组数据集(X,Y,Z点),我想用R来绘制.
我想从数据中创建一个曲面图,并在曲面图上叠加一个等高线图,以便创建等高线图是曲面图的"阴影"或投影的印象.等高线图将显示在曲面图下方.
我的数据集看起来有点像这样:
Axis | Data Type
-------------------
X | Date value
Y | Float value
Z | Float value
我怎样才能做到这一点?
我有一个三元组数据集(X,Y,Z点),我想用R来绘制.
我想从数据中创建一个曲面图,并在曲面图上叠加一个等高线图,以便创建等高线图是曲面图的"阴影"或投影的印象.等高线图将显示在曲面图下方.
我的数据集看起来有点像这样:
Axis | Data Type
-------------------
X | Date value
Y | Float value
Z | Float value
我怎样才能做到这一点?
Edit:
我刚刚看到你指出你的一个维度是约会.在这种情况下,have a look at Jeff Ryan's chartSeries3d是用来绘制三维时间序列的.在这里,他展示了yield 率随时间的变化曲线:
Original Answer:
据我所知,你想要一张countour map 作为3D曲面图下方平面上的投影.我不相信有一个简单的方法可以做到这一点,除了创造两个情节,然后结合他们.你可以find the spatial view helpful for this美元.
3D绘图有两个主要的R软件包:100(也可以使用相关的misc3d软件包)和102.
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曲面图,你想在下面创建一个countour map .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")
在这个曲面中,我将高度设为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.