图示显示3d外框轴

时间:2017-11-01 10:23:03

标签: r plotly

我使用以下代码在plotly中创建一个3d散点图:

library(plotly)
A <- c(50,20,0)
B <- c(50,0,30)
C <- c(50,0,0)
D <- c(50,20,30)
E <- c(0,0,30)
F <- c(0,20,0)
G <- c(0,0,0)
H <- c(0,20,30)
classes <- c("A","B","C","D",
             "E","F","G","H")
conceptual <- rbind(data.frame(),A,B,C,D,
                    E,F,G,H)
colnames(conceptual) <- c("X","Y","Z")
conceptual$labels <- classes
scene = list(camera = list(eye = list(x = 2.5, y = -1.5, z = 1.25)))
p <- plot_ly(conceptual, x = ~X, y = ~Y, z = ~Z, text = ~labels) %>%
  add_markers() %>% 
  add_text() %>% 
  layout(scene=scene,showlegend = FALSE)
p

得到这个情节: plot

我的问题是,如何在轴上添加一条显示框外侧的线?类似的东西: required plot

1 个答案:

答案 0 :(得分:1)

library(plotly)
A <- c(50,20,0);  B <- c(50,0,30);  C <- c(50,0,0);  D <- c(50,20,30)
E <- c(0,0,30);   F <- c(0,20,0);   G <- c(0,0,0);   H <- c(0,20,30)
classes <- c("A","B","C","D","E","F","G","H")
conceptual <- rbind(data.frame(),A,B,C,D,E,F,G,H)
colnames(conceptual) <- c("X","Y","Z")
conceptual$labels <- classes

l1 <- subset(conceptual, labels %in% c("E","B"))
l2 <- subset(conceptual, labels %in% c("D","B"))
l3 <- subset(conceptual, labels %in% c("C","B"))

scene = list(camera = list(eye = list(x = 2.5, y = -1.5, z = 1.25)))
p <- plot_ly(conceptual, x = ~X, y = ~Y, z = ~Z, text = ~labels) %>%
  add_markers() %>% 
  add_text() %>% 
  add_trace(x=~X, y=~Y, z=~Z, data=l1, 
            type='scatter3d', mode='lines',
            line = list(color = "black", width = 4, dash='dash')) %>%
  add_trace(x=~X, y=~Y, z=~Z, data=l2, 
            type='scatter3d', mode='lines',
            line = list(color = "black", width = 4, dash='dash')) %>%
  add_trace(x=~X, y=~Y, z=~Z, data=l3, 
            type='scatter3d', mode='lines',
            line = list(color = "black", width = 4, dash='dash')) %>%
  layout(scene=scene,showlegend = FALSE)
p

enter image description here