2017-04-20 153 views
1

我中的R由這兩個3D圖形,用兩個不同的功能:如何繪製在三維圖中的線中的R

x <- c(0,50,100,150,200,250,300,350,400,450) 
y <- c(0,50,100,150,200,250,300,350,400,450) 
z <- c(1,2,1,1,2,1,2,1,2,1) 

plot_ly(x=x,y=y,z=z) 
scatterplot3d(x, y, z) 

我想在這兩個曲線圖繪製,下面的線和相交它們之間的區域:

線兩圖繪製

Lines plotted in both graphs

+0

可以使用具有type = 「L」 lines3d()或points3d()從包rgl –

+0

我不清楚你在問什麼,但是,plot_ly和scatterplot3d只是通過不同的方式做同樣的事情。如果你想添加一個三維線的情節使用:data < - data.frame(x = x,y = y,z = z); (數據,x =〜x,y =〜y,z =〜z,type ='scatter3d',mode ='lines') –

回答

1

按照該線和交叉口plotly,這樣的事情就可以了:

library(scatterplot3d) 
library(plotly) 

x <- c(0,50,100,150,200,250,300,350,400,450) 
y <- c(0,50,100,150,200,250,300,350,400,450) 
z <- c(1,2,1,1,2,1,2,1,2,1) 
data <- data.frame(x=x,y=y,z=z) 
line <- data.frame(x = rep(200,5), y = seq(0,500,length.out = 5), z = rep(1,5)) 
line2 <- data.frame(x = rep(300,5), y = seq(0,500,length.out = 5), z = rep(1,5)) 
rect <- data.frame(expand.grid(x= c(200,300), y =c(200,300)),z = rep(1,4)) 

plot_ly() %>% 
add_trace(data=data, x=x, y=y, z=z, type="scatter3d", mode="markers") %>% 
add_trace(line, x = line$x, y = line$y, z = line$z, type = 'scatter3d', mode = 'lines', line = list(color = 'rgb(1, 1, 1)', width = 1 , dash = 'dash', width = 4)) %>% 
add_trace(line2, x = line2$x, y = line2$y, z = line2$z, type = 'scatter3d', mode = 'lines', line = list(color = 'rgb(1, 1, 1)', width = 1, dash = 'dash', width = 4)) %>% 
add_trace(line, x = line$y, y = line$x, z = line$z, type = 'scatter3d', mode = 'lines', line = list(color = 'rgb(1, 1, 1)', width = 1 , dash = 'dash', width = 4)) %>% 
add_trace(line2, x = line2$y, y = line2$x, z = line2$z, type = 'scatter3d', mode = 'lines', line = list(color = 'rgb(1, 1, 1)', width = 1, dash = 'dash', width = 4))%>% 
add_trace(rect, x=rect$x, y=rect$y, z=rect$z, type="mesh3d") 

結果與plotly:

enter image description here

+0

非常感謝!這工作得很好,這正是我需要的!有沒有一種方法可以繪製這個突出顯示區域的整個3d列? – lalatei

+0

你是指在z軸上繪製一個包含1到2陰影體積的棱鏡? –

+0

是的,那正是我需要的! – lalatei