Подтвердить что ты не робот

Графические точки на сфере в R

Не могли бы вы помочь мне сделать подобный сюжет в R?

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

Я хотел бы, чтобы он был интерактивным, чтобы я мог вращать сферу. Думаю, я должен использовать rgl. Я нашел пример, похожий на то, что мне нужно здесь, однако я не смог найти способ нарисовать сетку вместо заполненной сферы.

UPD: Воспроизводимый набор данных, который мог бы помочь ответить на вопрос (я взял его из 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)
4b9b3361

Ответ 1

Начните с

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

чтобы создать сферу "каркаса" (я немного обманываю здесь, рисуя две сферы, одну немного больше, чем другую... может быть лучший способ сделать это, но я не мог легко/быстро понять).

с веб-страница Wolfram по выбору сферы (), мы получаем

Аналогично, мы можем выбрать u = cos (phi) равномерно распределенным (так что мы имеем du = sin phi dphi) и получаем точки x = sqrt(1-u^2)*cos(theta); y = sqrt(1-u^2)*sin(theta); z=u с тетой в [0,2pi) и u в [-1,1], которые также равномерно распределены по S ^ 2.

Итак:

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)

Сферы прикладывают немного больше усилий, чтобы сделать, но лучше, чем результаты points3d() (плоские квадраты)...

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