При открытии новых устройств rgl стиль графика сильно отличается от стиля по умолчанию.

Когда я использую пакет rgl для построения нескольких трехмерных изображений на разных холстах (устройство rgl) после использования rgl.open() и устанавливаю bg как белый, стиль построения кажется таким отличным от стиля по умолчанию. Есть ли способ установить это? Пожалуйста, смотрите фотографии ниже. При повороте этих двух графиков вы можете получить совсем другой опыт. Вы можете попробовать построить тот же график на холсте по умолчанию, открыть новый и построить тот же рисунок.

холст по умолчаниюдобавлено полотно

Кроме того, есть ли способ изменить внешний блок координат с куба на сферу?


person lolibility    schedule 24.01.2013    source источник
comment
Я думаю, что это будет немного сложно отладить и воспроизвести. Можешь хотя бы рассказать о результатах sessionInfo(), а может чуть подробнее о своей ОС?   -  person Ben Bolker    schedule 24.01.2013
comment
Версия R 2.14.2 (29 февраля 2012 г.) Платформа: i386-pc-mingw32/i386 (32-разрядная версия) язык: [1] LC_COLLATE=English_United States.1252 [2] LC_CTYPE=English_United States.1252 [3] LC_MONETARY =English_United States.1252 [4] LC_NUMERIC=C [5] LC_TIME=English_United States.1252 прикрепленные базовые пакеты: [1] stats graphics grDevices utils наборы данных методы базы других прикрепленных пакетов: [1] rgl_0.92.894 загружается через пространство имен (и не прилагается): [1] tools_2.14.2 Спасибо   -  person lolibility    schedule 24.01.2013
comment
Не уверен, что мы понимаем немного сферы. Хотите непрозрачную сферу? Как вы хотите, чтобы он был помечен? Полярные координаты? широта-долгота?   -  person Spacedman    schedule 24.01.2013


Ответы (2)


(изменить) Используйте open3d() вместо rgl.open(), чтобы открыть новое окно. Документация предостерегает от смешивания вызовов rgl.* с вызовами *3d, и я думаю, что это пример. Вот три графика - по умолчанию, rgl.open() и open3d()...

library(rgl)
plot3d(1:4,1:4,1:4)
rgl.open()
plot3d(1:4,1:4,1:4)
open3d()
plot3d(1:4,1:4,1:4)

И результаты рядом:

введите здесь описание изображения

Информация о сеансе:

R Under development (unstable) (2012-12-14 r61321)
Platform: i686-pc-linux-gnu (32-bit)
[locale snipped]
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     
other attached packages:
[1] rgl_0.92.894
person Ben Bolker    schedule 24.01.2013

Если вы хотите поддерживать одну и ту же настройку от сеанса к сеансу, я думаю, вам нужно будет открыть пакет «rgl» при запуске (см. ?Startup) и указать параметр rgl.materials, который вы хотите использовать. Я искал настройки параметров в индексе из справки (package = rgl) и не смог найти настройку параметров. В рабочей области есть объект списка с именем r3dDefaults, который можно изменить. Возможно:

r3dDefaults$bg$color <- "white"   # Change the value to get something different
# > names(r3dDefaults)
# [1] "userMatrix" "mouseMode"  "FOV"        "bg"         "family"     "material"  

Различия между поведением устройства между командами *.r3d и командами rgl.* изложены в ?r3d и в менее полной степени в ?open.3d .

Что касается желания использовать сферическую координату, см. страницу help(rgl.bg) и попробуйте аргумент 'sphere=TRUE'. (Мне это не понравилось, но YMMV.)

rgl.open()
rgl.bg(sphere=TRUE, color=c("grey","blue"), lit=FALSE, back="lines" )
person IRTFM    schedule 24.01.2013
comment
тут не совсем работает. Я пробовал просто с plot3d (1: 4, 1: 4, 1: 4), фон - сфера, но внутренний боковой куб все еще существует. И то, что я имею в виду под координатами сферы, означает, что я также могу увеличивать и уменьшать масштаб. Я могу увидеть всю сферу, если уменьшу масштаб. Я не могу показать вам картинку прямо сейчас, но я уверен, что есть много примеров. Спасибо! - person lolibility; 24.01.2013
comment
Я думаю, было бы полезно, если бы вы действительно нашли пример и ссылку на него, так как я не совсем понимаю ваше описание. На самом деле, я бы порекомендовал вам отредактировать свой вопрос, чтобы удалить этот бит и опубликовать новый вопрос (сообщения StackOverflow должны содержать только один вопрос...) - person Ben Bolker; 24.01.2013
comment
@lolibility: вы смешиваете функции rgl.* и *3d. BenBolker и страницы помощи, которые вы должны были прочитать, посоветовали вам НЕ делать этого. У них разные системы координат. - person IRTFM; 24.01.2013