Слоистые графики ScatterD3?

Можно ли накладывать несколько слоев графиков ScatterD3 друг на друга? Я не смог найти это нигде ни в виньетках, ни в поиске StackExchange/Google.

Мне любопытно, так как люди смогли сделать графики PCA Vector Loading с помощью ScatterD3. . Если бы можно было наложить это поверх другого графика с точками (аналогично тому, что возможно со слоями ggplot2 или ggvis), вы могли бы получить великолепный и интерактивный график PCA. Кроме того, вы можете обрисовывать точки (поскольку обводка точки в настоящее время недоступна).

Есть ли у кого-нибудь понимание или обходные пути?


person Scott    schedule 25.01.2017    source источник


Ответы (2)


Можно, но сложнее. Я бы рекомендовал использовать пакет plotly. Вы сможете использовать вкладку «Вид» в RStudio и более легко исследовать свой 3D-разброс, вращая его. Цветовую схему также проще добавить Этот пост пытается решить похожую, хотя и не идентичную проблему. Хороший (бесплатный) учебник по plotly можно найти здесь через DataCamp.

person David C.    schedule 26.01.2017
comment
Я думаю, вы могли неправильно понять вопрос; Я спрашиваю о пакете ScatterD3, а не о scatterplot3d. Сбиваю с толку, насколько похожи имена, я знаю. - person Scott; 26.01.2017
comment
Да, я неправильно понял ваш вопрос, и извините за это. Поскольку ScatterD использует ggplot2 и, следовательно, grid графику, возможно, вы могли бы внести изменения в сетку R? Это может слишком усложнить вашу задачу, но я бы пошел туда, если бы вам действительно нужно было это сделать... - person David C.; 26.01.2017

Ответ на вопрос здесь благодаря автору ScatterD3. Чтобы создать полный график PCA, вам нужно переопределить отображаемый фрейм данных следующим образом:

library(FactoMineR)
library (ScatterD3)

out<-PCA(iris[,1:4],scale.unit = TRUE, graph=FALSE)
    cc1<-data.frame(out$ind$coord)
    cc2<-data.frame(out$var$coord)

points <- data.frame(x = cc1$Dim.1, 
                     y = cc1$Dim.2,
                     color = iris$Species,
                     lab = row.names(iris), 
                     type = rep("point", 150))

arrows <- data.frame(x = cc2$Dim.1, 
                     y = cc2$Dim.2, 
                     color = "Blue",
                     lab = row.names(cc2), 
                     type = rep("arrow", 4))

data1 <- rbind(points, arrows)

scatterD3(data1, x = x, y = y,
          lab = lab, type_var = data1$type, col_var = color)
person Scott    schedule 27.01.2017