2 plot3D | 三维数据绘图:常见图形——线段、箭头、矩形、长方体、箱线

专注系列化、高质量的R语言教程
推文索引 | 联系小编 | 付费合集
本篇推文介绍几种常见的图形在工具包中的绘制函数 。目录如下:
library(plot3D)
线段
工具包里绘制线段的函数是() , 对应到工具包的函数就是()和() 。
参数中 , x0、y0、z0表示线段起点的坐标 , x1、y1、z1表示线段终点的坐标 。可以使用向量同时绘制多个线段 。
x0 <- c(-0.8, 0.8,0.8, -0.8)x1 <- c( 0.8, 0.8, -0.8, -0.8)y0 <- c(-0.8, -0.8, 0.8,0.8)y1 <- c(-0.8,0.8, 0.8, -0.8)z0 <- c(0, 0, 0, 0)z1 <- z0segments3D(x0, y0, z0, x1, y1, z1,covar = x0, col = gg.col(4),lwd = 2)
segments2D(x0, y0, x1, y1, col = gg.col(4),lwd = 2)
箭头
工具包里绘制箭头的函数是() , 对应到工具包的函数就是()和() 。
参数含义同()函数 。
arrows3D(x0, y0, z0, x1, y1, z1,covar = x0, col = gg.col(4),lwd = 2)
arrows2D(x0, y0, x1, y1,col = gg.col(4),lwd = 2)
矩形
工具包里绘制矩形的函数是rect() 。这里的矩形并不是任意形式的矩形 , 而是四条边都与x、y轴平行或垂直的矩形 , 因此在绘制时只需要提供其中一个对角线的两个端点的坐标即可确定矩形位置 。
对应到工具包的函数就是() , 它只能绘制与x-y平面、x-z平面和y-z平面的其中一个平面平行的矩形 。
参数中 , x0、y0、z0表示对角线起点端点的坐标 , x1、y1、z1表示对角线终点端点的坐标 。为了保证矩形平行于x-y平面、x-z平面和y-z平面中的一个 , x1、y1、z1的其中一个必须设置为NULL 。例如 , 若z1 = NULL , 则矩形平行于x-y平面 。可以使用向量同时绘制多个矩形 。
par(mfrow = c(1,2))rect3D(0,0,1,1,1, col = "red", border = "blue", lwd = 2)rect3D(0,1,1,1, z1 = 0, col = "blue", border = "red", lwd = 2,)
长方体
绘制长方体的函数是box3D() 。
参数中 , x0、y0、z0表示体对角线起点端点的的坐标 , x1、y1、z1表示体对角线终点端点的的坐标 。
box3D(x0 = -0.8, y0 = -0.8, z0 = -0.8, x1 =0.8, y1 =0.8, z1 =0.8, col = "red", border = "black", lwd = 2)
读者可能会发现 , 这里绘制的长方体和常见的直观图效果并不一样 。这是因为工具包绘制的是透视图 , 它使用的是点光源 , 遵循的原则是“近大远小” , 平行关系会被改变;而绘制直观图使用的是平行光源 , 其不会改变平行关系 。
设置phi = 90表示从正上方俯视长方体 , 效果如下:
box3D(x0 = -0.8, y0 = -0.8, z0 = -0.8, x1 =0.8, y1 =0.8, z1 =0.8, col = "red", border = "black", lwd = 2,phi = 90, alpha = 0.5)
上面俯视图正体现了透视图“近大远小”的特点 。在直观图下 , 长方体的俯视图应是一个矩形 , 而在透视图下 , 上顶面较近、下底面较远 , 因此俯视图就会出现出两个矩形 , 两个矩形顶点间的连线表达了由近到远的变化 。
箱线
与box3D()函数的用法类似 , 但是绘制的是长方体的边线 。
border3D(x0 = -0.8, y0 = -0.8, z0 = -0.8, x1 =0.8, y1 =0.8, z1 =0.8,col = "red")
多边形