Sti*_*MAN 60 3d statistics plot r
我有一个3元组数据集(X,Y,Z点),我想用R绘图.
我想从数据中创建一个曲面图,并在曲面图上叠加一个等高线图,以便创建轮廓图的印象,即从表面图中"阴影"或投影.等高线图将显示在曲面图下方.
我的数据集看起来有点像这样:
Axis | Data Type
-------------------
X | Date value
Y | Float value
Z | Float value
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Sha*_*ane 85
编辑:
我刚看到你指出你的一个尺寸是一个日期.在这种情况下,请看一下Jeff Ryan的chartSeries3d,它设计用于绘制三维时间序列图.他在这里显示了随时间变化的收益率曲线
chartSeries示例http://www.quantmod.com/examples/chartSeries3d/chartSeries3d-thumb.png
原答案:
据我了解,您希望计数地图成为3D曲面图下方平面上的投影.我不相信除了创建两个图然后组合它们之外,还有一种简单的方法可以做到这一点.您可能会发现空间视图对此有帮助.
针对3D绘制两个主要的R程序包:RGL(或者你可以使用相关的misc3d封装)和scatterplot3d.
RGL
rgl包使用OpenGL创建交互式3D图(在rgl网站上阅读更多内容).以下是使用该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")
Run Code Online (Sandbox Code Playgroud)
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")
Run Code Online (Sandbox Code Playgroud)
在这个表面我设置高度= 1,以便我们在另一个表面下面有一个平面.最终看起来像这样,可以用鼠标旋转:
3D曲面图http://i45.tinypic.com/12637gy.jpg
scatterplot3d
scatterplot3d更像是R中的其他绘图函数(读取晕影).这是一个简单的例子:
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)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您需要覆盖图像.R-Wiki 在创建tanslucent背景图像方面有一个很好的帖子.