在R中的透视图上叠加图像图

时间:2014-01-14 16:49:29

标签: r plot

如果之前已经回答过这个问题我很抱歉,但是通过搜索网站找不到这个问题的答案。基本上我想要做的是,在R中,将image()绘图覆盖在persp()绘图之上,这样基本上你会得到的是带有热量的3D绘图它上面的地图对应另一个功能。我在下面的函数中有一些示例代码:

x1 = seq(0,1,.01)
x2 = seq(0,1,.01)

f = function(x1,x2){
    ans = x1 + x2
    return(ans)
}
h = function(x1,x2){
    ans = 1.5-x1-2*x2-.5*sin(2*pi*(x1^2-2*x2))
    ans = sapply(ans,function(x){max(x,0)})
    return(ans)
}

z = outer(x1,x2,f)
w = outer(x1,x2,h)

persp(x1,x2,z)
image(x1,x2,w)

image(x1,x2,z,xlab=expression(x[1]),ylab=expression(x[2]))
contour(x1,x2,w,add=T,nlevels=10)

基本上,我想在下面生成这个透视图 enter image description here 然后将此热图叠加在透视图表面的顶部 enter image description here

为了在2D中可视化它应该是什么样子,我已经能够生成以下内容: enter image description here

我更愿意使用R中的基础软件包找到这个问题的答案,但是如果我需要安装软件包来获得我需要的东西,我也会对此持开放态度。

1 个答案:

答案 0 :(得分:1)

persp函数有一个col参数,用于指定每个构面的颜色,因此如果根据w变量计算颜色并将其传入,则应该给出您想要的颜色。例如:

w2 <- w/max(w)
cr <- colorRamp(c('white','yellow','red'))
w3 <- cr(w2)
w4 <- rgb( w3[,1], w3[,2], w3[,3], maxColorValue=255 )
dim(w4) <- c(101,101)

persp(x1,x2,z, col=w4[1:100,1:100])

这里每个facet的颜色对应于左下角的w值,你可以在矩形的中心评估w,或者平均4个角的值等等。