Отображение нескольких трехмерных графиков в одном окне с помощью plot3D {rasterVis} в R

Я заинтересован в создании двух трехмерных топографических графиков, которые отображаются рядом в одном окне устройства Xquartz. Отображение двух 3d-графиков в одном и том же окне довольно просто с помощью пакета rgl - в документации множество примеров использования mfrow3d() и других методов.

Однако мне нужно использовать функцию plot3D() из пакета rasterVis. Причина, по которой я использую plot3D() из rasterVis, а не что-то вроде surface3d() из rgl, заключается в том, что мне нужно использовать аргумент drape в plot3D() для отображения значений из растра в виде цветов на 3D-топографической карте (и этот растр имеет значения, отличные от того, который создает ось z на графике). Если у кого-нибудь есть советы по поводу чего-либо, аналогичного драпировке внутри функции rgl, меня это тоже заинтересует!

Когда я пытаюсь использовать mfrow3d() вместе с функцией plot3D(), он выводит серию пустых окон устройства вместо отображения двух графиков рядом в одном и том же окне.

Вот некоторый код для создания топографической карты с использованием plot3D из документации rasterVis:

    data(volcano)
    r <- raster(volcano)
    extent(r) <- c(0, 610, 0, 870)
    levelplot(r, col.regions=terrain.colors)
    plot3D(r)

И вот здесь я пытаюсь использовать mfrow3d для построения 2 одинаковых участков вулканов рядом, один в синем и один в красном, который я адаптировал из документации rgl:

    volcanos <- list(r, r)
    col <- c("blue", "red")
    open3d()
    mfrow3d(1,2)
    for (i in 1:2) {
    next3d()   
    plot3D(volcanos[[i]], col=col[i])
    }

Что я пытаюсь сделать, даже возможно с plot3D от rasterVis? Любые идеи будут высоко ценится!

1 ответ

Решение

Текущая версия rasterVis::plot3D открывает новое устройство при каждом вызове. Я изменил его код, чтобы проверить, есть ли активное устройство, и открывать новое только при необходимости. С этим коммитом ваш пример работает как положено. Вы должны установить версию для разработки rasterVis с devtools::install_github('oscarperpinan/rasterVis'),

Другие вопросы по тегам