2013-05-03 9 views
24

Mam wykres 3D za pomocą RGL. Chciałbym wykonać identyczne wykresy za pomocą koloru, aby podkreślić rozkład pewnej zmiennej. Aby to zrobić, chciałbym mieć identyczne wątki, jak znaleźć i ustawić orientację wątku?Zapisz orientację wykresu RGL plot3d()

Po wykonaniu wstępnej fabuły, przesuwaj ją, aby znaleźć ładny kąt wyświetlania i chciałbym zapisać ten kąt i uwzględnić go w przyszłych skryptach kreślarskich. Ktoś ma sugestię, jak to zrobić?

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

try 'pp <- par3d (no.readonly = true); ...; par3d (pp) ' –

+1

również - czy istnieje dobry sposób na jego kodowanie - i, e, zapisać' pp' jako zmienną, którą mogę włączyć do przyszłego skryptu bez ponownego przeliczania? – zach

+0

Sprawdź również '? Rgl.viewpoint' – James

Odpowiedz

21

Komentarz Bena w zasadzie odpowiada na twoje pytanie; Dotyczy to tylko expand.dots co pisał;)

## 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) 
+1

Bezpieczniej jest używać 'control =" all "' w linii 'dput()', ponieważ zapisuje ona wszystkie informacje o usuwaniu i zapewnia działanie wyniku dget. –

+0

Bez 'control =" all "' Wystąpił błąd * niepoprawna liczba wymiarów *, ponieważ dget() niepoprawnie spłaszczył obiekt UserMatrix do listy. –

+0

@AssadEbrahim - Dzięki za zwrócenie na to uwagi! Właśnie zredagowałem odpowiedź zawierającą sugerowaną poprawę. –