如何在r中以3D形式绘制多边形

时间:2016-01-29 15:38:39

标签: r matlab

我试图在R中的三维空间中绘制一组多边形。每个多边形是(非常规)k-simplex;也就是说,多边形的每一边由三角形构成。这里给出一个例子:

             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

我在R中找到了三维中的图形点(scatterplot3d)或函数(plot3D)的包,但我没有找到一个图形多边形。 MATLAB中有一个函数(fill3)生成我正在寻找的图形(如下图所示),但是我希望在一个平台上执行所有数据分析(其中大部分已经在R中编码)。 R中是否有一个包或函数可以生成类似于MATLAB中三维多边形的数字?

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

1 个答案:

答案 0 :(得分: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))