Вот одна версия, использующая функцию из одного из ответов на Как мне сгенерировать отображение из чисел в цвета в R? .
# A function based on Dave X's answer to the colour mapping question
map2color <- function(x, pal, limits = range(x)){
pal[findInterval(x, seq(limits[1], limits[2], length.out = length(pal) + 1),
all.inside=TRUE)]
}
persp3d(volcano, col = map2color(volcano, rainbow(100)))
Создает это изображение:
Чтобы получить сплошные края («шторы» в plot3D), просто окружите данные дополнительными строками и столбцами минимального значения. Например,
m <- min(volcano)
volcano2 <- cbind(m, rbind(m, volcano, m), m)
Чтобы края выглядели плоскими, вам нужно добавить значения x
и y
, чуть-чуть меньше оригинальных:
x <- c(0.9999, 1:nrow(volcano), nrow(volcano) + 0.0001)
y <- c(0.9999, 1:ncol(volcano), ncol(volcano) + 0.0001)
persp3d(x, y, volcano2, col = map2color(volcano2, heat.colors(100)))
Я переключил палитру на heat.colors
только для разнообразия.