Gói lattice

library(lattice)

Ví dụ 1

wireframe(volcano, zlim = c(90, 250), nlevels = 10,
          scales = list(arrows = FALSE),
          aspect = c(61/87, 0.3), panel.aspect = 0.6,
          shade = TRUE, screen = list(z = 20, x = -60))

Ví dụ 2

panel.3d.contour <- function(x, y, z, rot.mat, distance,
     nlevels = 20, zlim.scaled, ...) {
     add.line <- trellis.par.get("add.line")
     panel.3dwire(x, y, z, rot.mat, distance, zlim.scaled = zlim.scaled,
         ...)
     clines <- contourLines(x, y, matrix(z, nrow = length(x),
         byrow = TRUE), nlevels = nlevels)
    for (ll in clines) {
        m <- ltransform3dto3d(rbind(ll$x, ll$y, zlim.scaled[2]),
             rot.mat, distance)
         panel.lines(m[1, ], m[2, ], col = add.line$col,
             lty = add.line$lty, lwd = add.line$lwd)
    }
}
wireframe(volcano, zlim = c(90, 250), nlevels = 10,
          scales = list(arrows = FALSE),
          aspect = c(61/87, 0.3), panel.aspect = 0.6, panel.3d.wireframe = "panel.3d.contour",
          shade = TRUE, screen = list(z = 20, x = -60))

Gói Plotly

library(plotly)

Ví dụ 1

p <- plot_ly(z = ~volcano) %>% add_surface()
p

ví dụ 2

z <- c(
  c(8.83,8.89,8.81,8.87,8.9,8.87),
  c(8.89,8.94,8.85,8.94,8.96,8.92),
  c(8.84,8.9,8.82,8.92,8.93,8.91),
  c(8.79,8.85,8.79,8.9,8.94,8.92),
  c(8.79,8.88,8.81,8.9,8.95,8.92),
  c(8.8,8.82,8.78,8.91,8.94,8.92),
  c(8.75,8.78,8.77,8.91,8.95,8.92),
  c(8.8,8.8,8.77,8.91,8.95,8.94),
  c(8.74,8.81,8.76,8.93,8.98,8.99),
  c(8.89,8.99,8.92,9.1,9.13,9.11),
  c(8.97,8.97,8.91,9.09,9.11,9.11),
  c(9.04,9.08,9.05,9.25,9.28,9.27),
  c(9,9.01,9,9.2,9.23,9.2),
  c(8.99,8.99,8.98,9.18,9.2,9.19),
  c(8.93,8.97,8.97,9.18,9.2,9.18)
)
dim(z) <- c(15,6)
z2 <- z + 1
z3 <- z - 1

p <- plot_ly(showscale = FALSE) %>%
  add_surface(z = ~z) %>%
  add_surface(z = ~z2, opacity = 0.98) %>%
  add_surface(z = ~z3, opacity = 0.98)
p