rgl 3D диаграмма рассеяния - контроль размера сфер из 4-го измерения (пузырьковая диаграмма)

Я работаю над трехмерным точечным графиком, используя пакет rgl в R, с несколькими цветами для разных серий. Мне было интересно, есть ли способ построить 4-е измерение, контролируя размер сфер.

Я знаю, что это возможно с сюжетом («пузырьковый сюжет»): https://plot.ly/r/3d-scatter-plots/, но Plotly начинает мерцать при работе с большим количеством точек данных. Можно ли добиться того же результата, используя Rgl?


person julien.leroux5    schedule 22.12.2018    source источник


Ответы (1)


set.seed(101)
dd <- data.frame(x=rnorm(100),y=rnorm(100),z=rnorm(100),
                 c=rnorm(100),s=rnorm(100))

Функция масштабирования (я настроил, чтобы значения оставались строго в (0,1), не знаю, действительно ли это необходимо):

ss <- function(x) scale(x,center=min(x)-0.01,scale=diff(range(x))+0.02)
library(rgl)

Определите цвета (может быть лучший способ сделать это...)

cvec <- apply(colorRamp(c("red","blue"))(ss(dd$c))/255,1,
              function(x) rgb(x[1],x[2],x[3]))

Картинка (нужно type="s" чтобы получить сферы)

with(dd,plot3d(x,y,z,type="s",radius=ss(s), col=cvec))

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

person Ben Bolker    schedule 22.12.2018
comment
Спасибо, именно то, что мне было нужно! Я не мог заставить этот аргумент радиуса работать. Теперь rgl становится довольно медленным с ~ 30 000 сфер... - person julien.leroux5; 22.12.2018
comment
использование точек вместо сфер будет отображаться быстрее, но AFAICT нет очевидного способа иметь точки переменного размера на графике ... (тоже не так красиво) - person Ben Bolker; 22.12.2018