我使用以下代码在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
答案 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