繁体   English   中英

在R中向曲面图添加等高线图

[英]Add contour plot to surface plot in R

我正在用R绘制Ackley的函数,我想在图的底部有一个额外的等高线图。 这是我正在做的事情:

library(fields)

ackley <- function(x1, x2) {
  a <- 20
  b <- 0.2
  c <- (2*pi)
  d <- 2
  fofx1 <- -a*exp(-b*sqrt(1/d*sum(c(x1,x2)^2))) -
    exp(sum( cos(c*c(x1,x2))/d))+a+exp(1)
  return(fofx1)
}

Ackley <- Vectorize(ackley)

x1 <- seq(-4,4,length=150)
x2 <- seq(-4,4,length=150)
z <- outer(x1, x2, FUN="Ackley")

drape.plot( x1,x2,z, col=rev(rainbow(50)), horizontal = FALSE)

在此输入图像描述

是否可以使用drape.plot()添加轮廓或是否有其他替代方案?

plot3D库提供了一个很好的解决方案。 详情请见此处

library(plot3D)

ackley <- function(x1, x2) {
  a <- 20
  b <- 0.2
  c <- (2*pi)
  d <- 2
  fofx1 <- -a*exp(-b*sqrt(1/d*sum(c(x1,x2)^2))) -
    exp(sum( cos(c*c(x1,x2))/d))+a+exp(1)
  return(fofx1)
}

Ackley <- Vectorize(ackley)

x1 <- seq(-4,4,length=150)
x2 <- seq(-4,4,length=150)
z <- outer(x1, x2, FUN="Ackley")
zlim <- c(0, 15)

persp3D(x=x1, y=x2, z = z, xlab = "x1", bty = "bl2",
        ylab = "x2", zlab = "z", clab = "",
        expand = 0.5, d = 2, phi = 20, theta = 30, resfac = 2,
        contour = list(col = "grey", side = c("zmin", "z")),
        zlim = zlim, colkey = list(side = 4, length = 0.5))

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM