Сохранение ориентации графика RGL plot3d ()

У меня есть 3D-сюжет с использованием RGL. Я хотел бы сделать идентичные графики, используя цвет, чтобы выделить распределение некоторой переменной. Для этого я хотел бы иметь одинаковые сюжеты, как мне найти и установить ориентацию сюжета?

Как только я создаю предварительный сюжет, я перемещаю его, чтобы найти хороший угол отображения, и я хотел бы сохранить этот угол и включить его в будущие сценарии построения. У кого-нибудь есть предложение, как это сделать?

library(rgl)
plot3d(iris) 
#play with the plot to find a good angle
#save the angle for future plots

r rgl
person zach    schedule 03.05.2013    source источник
comment
попробуйте pp <- par3d(no.readonly=TRUE); ...; par3d(pp)   -  person Ben Bolker    schedule 03.05.2013
comment
также - есть ли хороший способ его жестко запрограммировать - например, сохранить pp как переменную, которую я могу включить в будущий скрипт без пересчета?   -  person zach    schedule 03.05.2013
comment
Также посмотрите ?rgl.viewpoint   -  person James    schedule 03.05.2013
comment
Спасибо, Джеймс. Я мог представить, как взять результат вызова par3D () и жестко закодировать представление в моем скрипте с помощью rgl.viewpoint - отличный совет.   -  person zach    schedule 03.05.2013


Ответы (1)


Комментарий Бена в основном отвечает на ваш вопрос; это просто относится expand.dots к тому, что он написал;)

## In an inital session:

library(rgl)
plot3d(iris) 

## Now move the image around to an orientation you like

## Save RGL parameters to a list object
pp <- par3d(no.readonly=TRUE)

## Save the list to a text file
dput(pp, file="irisView.R", control = "all")

.......

## Then, in a later session, to recreate the plot just as you had it:

library(rgl)
pp <- dget("irisView.R")
plot3d(iris)
par3d(pp)
person Josh O'Brien    schedule 03.05.2013
comment
Безопаснее использовать control="all" в строке dput(), так как это сохраняет всю информацию об удалении и гарантирует, что результат dget работает. - person Assad Ebrahim; 23.04.2014
comment
Без control="all" я получил ошибку неправильное количество измерений, потому что dget () неправильно свернул userMatrix в список. - person Assad Ebrahim; 23.04.2014
comment
@AssadEbrahim - Спасибо, что это заметили! Я только что отредактировал ответ, включив в него предложенное вами улучшение. - person Josh O'Brien; 23.04.2014