2015-12-31 20 views
11

Potresti aiutarmi a realizzare una trama simile a questa in R?Punti trama su una sfera in R

enter image description here

mi piacerebbe averlo come interattivo che ho potuto ruotare la sfera. Credo che dovrei usare rgl. Ho trovato un esempio simile a quello che mi serve here, tuttavia non sono riuscito a trovare un modo per disegnare una griglia invece di una sfera piena.

UPD: Un set di dati riproducibili che potrebbe aiutare rispondendo alla domanda (l'ho preso da here):

u <- runif(1000,0,1) 
v <- runif(1000,0,1) 
theta <- 2 * pi * u 
phi <- acos(2 * v - 1) 
x <- sin(theta) * cos(phi) 
y <- sin(theta) * sin(phi) 
z <- cos(theta) 
library("lattice") 
cloud(z ~ x + y) 

risposta

17

Inizia con

library("rgl") 
spheres3d(0,0,0,lit=FALSE,color="white") 
spheres3d(0,0,0,radius=1.01,lit=FALSE,color="black",front="lines") 

per creare una sfera "wireframe" (I sto imbrogliando un po 'qui disegnando due sfere, una leggermente più grande delle altre ... potrebbe esserci un modo migliore per farlo, ma non ho potuto facilmente/rapidamente capirlo).

dal Wolfram web page on sphere point picking (la fonte della vostra foto) otteniamo

Allo stesso modo, siamo in grado di raccogliere u = cos (phi) da distribuire in maniera uniforme (quindi dobbiamo du = sin phi dphi) e ottiene la punti x = sqrt(1-u^2)*cos(theta); y = sqrt(1-u^2)*sin(theta); z=u con theta in [0,2pi) e u in [-1,1], che sono anche uniformemente distribuiti su S^2.

Quindi:

set.seed(101) 
n <- 50 
theta <- runif(n,0,2*pi) 
u <- runif(n,-1,1) 
x <- sqrt(1-u^2)*cos(theta) 
y <- sqrt(1-u^2)*sin(theta) 
z <- u 
spheres3d(x,y,z,col="red",radius=0.02) 

Le sfere prendere un piccolo sforzo in più per rendere, ma sono più belle rispetto ai risultati di points3d() (quadrati piatti) ...

enter image description here

+0

Una nota per Utenti Mavericks + Mac. Se compili dal sorgente della versione corrente: rgl_0.95.1435, potresti ottenere risultati migliori rispetto alla versione binaria su CRAN. –

+0

È possibile evitare di mostrare i punti posteriori sulla sfera? Per renderlo non trasparente? – desa