I create a new function, that add grid to xy and/or yz function. The argument grid now , can take a list like grid=c('xy','yz')
z <- seq(-10, 10, 0.01)
x <- cos(z)
y <- sin(z)
sactter.grid(x, y, z, highlight.3d=TRUE,
col.axis="blue",
grid=c('xy','xz','yz'), ## add grid to all facets
col.grid="lightblue")
You can find the source code of the new function, in this gist.
Here the code modified:
if ("xy" %in% grid || grid) {
i <- x.min:x.max
segments(i, z.min, i + (yx.f * y.max), yz.f * y.max +
z.min, col = col.grid, lty = lty.grid)
i <- 0:y.max
segments(x.min + (i * yx.f), i * yz.f + z.min, x.max +
(i * yx.f), i * yz.f + z.min, col = col.grid, lty = lty.grid)
}
if ("xz" %in% grid) {
i <- x.min:x.max
segments(i + (yx.f * y.max), yz.f * y.max + z.min,
i + (yx.f * y.max), yz.f * y.max + z.max,
col = col.grid, lty = lty.grid)
temp <- yx.f * y.max
temp1 <- yz.f * y.max
i <- z.min:z.max
segments(x.min + temp,temp1 + i,
x.max + temp,temp1 + i , col = col.grid, lty = lty.grid)
}
if ("yz" %in% grid) {
i <- 0:y.max
segments(x.min + (i * yx.f), i * yz.f + z.min,
x.min + (i * yx.f) ,i * yz.f + z.max,
col = col.grid, lty = lty.grid)
temp <- yx.f * y.max
temp1 <- yz.f * y.max
i <- z.min:z.max
segments(x.min + temp,temp1 + i,
x.min, i , col = col.grid, lty = lty.grid)
}