Завершенные пропущенные строки с использованием rgl grid3d

Кто-нибудь знает, как 1) завершить отсутствующие линии сетки в вызове grid3d для y и 2) провести горизонтальные линии сетки, чтобы закрыть верхнюю часть сетки, построенных вызовами grid3d для x и y? Я играл с различными комбинациями pretty звонков внутри grid3d безрезультатно, и мне интересно, является ли это трюком rgl или спецификацией с моей стороны. Кроме того, я хотел бы увеличить нумерацию вертикальной оси до места, где заканчиваются замкнутые сетки.

library(rgl)
cpts <- seq(0, 2, length = 40)
spts <- seq(0, 1, length = 20)
grid <- expand.grid(s=spts, c=cpts)
UFn  <- function(s,c){c^(0.5) - exp(s) + 1}
U    <- UFn(grid$s, grid$c)
open3d()
rgl.surface(x = spts, y = matrix(U,nrow = 40, ncol = 20), z = cpts, 
            coords = c(1,3,2), specular = "black")
axes3d("x", at = pretty(spts, n = 2), color = "black")
axes3d("y", at = pretty(cpts, n = 5), color = "black")
axes3d("z--", color = "black")
grid3d("x")
grid3d("y", at = pretty(spts, n = 2))
title3d(xlab ='s', ylab = 'c', zlab = 'U', color = "black")
rgl.snapshot("3d.png")

enter image description here

Ответ 1

Я бы сказал, что это ошибка. При использовании grid3d("y",n=2) вы не получаете никаких z-строк, хотя они должны быть одинаковыми. Вы можете обойти это, используя спецификацию списка at, задав элемент x в списке, например:

grid3d("y", at = list(x=pretty(spts, n = 2)))