2016-01-29 148 views
0

我試圖在R中的三維空間中繪製一組多邊形。每個多邊形都是一個(非規則)k-單形;也就是說,多邊形的每一邊都由三角形構成。一個例子是在這裏給出:R中如何在三維圖形中繪製一個多邊形

   x1 y1 z1  x2 y2 z2 x3 y3 z3 
triangle1 -2.59 8.44 6.00 -11.31 10.75 1.09 -2.59 8.44 6.00 
triangle2 0.19 5.50 0.00 -3.66 10.27 0.61 0.19 5.50 0.00 
triangle3 -11.31 10.75 1.09 -10.83 12.02 1.02 -2.73 9.75 1.23 
triangle4 -10.83 12.02 1.02 0.19 5.50 0.00 -3.66 10.27 0.61 
triangle5 0.19 5.50 0.00 -3.66 10.27 0.61 0.19 5.50 0.00 
triangle6 -11.31 10.75 1.09 -10.83 12.02 1.02 -2.73 9.75 1.23 
triangle7 -10.83 12.02 1.02 -2.59 8.44 6.00 -3.66 10.27 0.61 
triangle8 -2.59 8.44 6.00 -2.73 9.75 1.23 -2.59 8.44 6.00 

我發現軟件包圖表點(scatterplot3d)或功能(PLOT3D格式)在三維空間中,但我還沒有找到一個圖形多邊形。在MATLAB(fill3)中有一個函數用於生成我正在尋找的圖形(示例如下),但是我希望在一個平臺上執行我的所有數據分析(其中大部分已經用R編碼)。 R中是否有包或函數會生成類似於MATLAB中的三維多邊形的圖形?

Above data visualized as a three dimensional polygon, coded in MATLAB

回答

1

你正在尋找的包plot3D,特別是surf3D功能。示例如下:

x <- data.matrix(dat[,c("x1", "x2","x3")]) 
y <- data.matrix(dat[,c("y1", "y2","y3")]) 
z <- data.matrix(dat[,c("z1", "z2","z3")]) 


surf3D(x,y,z, colvar=NULL, col="blue", border="black", theta = 75, phi=45, bty="b2", zlim=c(0,6*13), xlim = c(-12,2), ylim=c(5,13)) 
+0

非常感謝您的回覆。如果可以,我有兩個後續問題。 1)當我運行上面的代碼時,我得到一個凹形圖形(即,它不連接所有的三角形)。你知道如何避免這個問題嗎? 2)是否可以使用此功能在同一圖上繪製多個多邊形? –