Отображение нескольких трехмерных графиков в одном окне с помощью 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')
,