2013-05-03 4 views
24

Ho un grafico 3D utilizzando RGL. Mi piacerebbe creare trame identiche usando il colore per evidenziare la distribuzione di alcune variabili. Per fare questo mi piacerebbe avere trame identiche, come faccio a trovare e impostare l'orientamento di una trama?Salva l'orientamento di un grafico RGL plot3d()

Una volta eseguita una trama preliminare, la sposto per trovare un angolo di visualizzazione piacevole e vorrei salvare quell'angolo e incorporarlo negli script di tracciamento futuri. Qualcuno ha un suggerimento su come farlo?

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

prova 'pp <- par3d (no.readonly = TRUE); ...; par3d (pp) ' –

+1

anche - c'è un buon modo per hardcarlo - io, e, salvare' pp' come una variabile che posso incorporare in uno script futuro senza ricalcolare? – zach

+0

Controlla anche '? Rgl.viewpoint' – James

risposta

21

commento di Ben risponde essenzialmente alla tua domanda; questo solo vale expand.dots a ciò che ha scritto;)

## 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

È più sicuro usare 'control =" all "' nella riga 'dput()', poiché salva tutte le informazioni di deparsing e assicura che il risultato di dget funzioni. –

+0

Senza 'control =" all "' Ho ricevuto un errore * numero errato di dimensioni *, perché dget() ha appiattito in modo errato userMatrix in un elenco. –

+0

@AssadEbrahim - Grazie per averlo notato! Ho appena modificato la risposta incorporando il miglioramento suggerito. –