专栏名称: R语言实战
它太神奇了,满载珍宝,可以让那些聪明狡猾和粗野胆大的人得到充分满足,但不适合胆小者。 ————《星际迷航.下一代》
51好读  ›  专栏  ›  R语言实战

R语言-三维绘图

R语言实战  · 公众号  ·  · 2017-06-23 10:32

正文

Scatterplot3d是一个用于可视化多变量数据的R包一个三维空间。R是一种“数据分析和图形语言”。在这个本文讨论了包的特性。它是专门设计的使用已有的R和图形系统的功能,从而显示R图形系统的可扩展性。本节我们共同学习一下Scatterplot3d的基本用法。

在下图中,螺旋线是用3D高亮显示模式来计算和绘制的。在一个蓝色的盒子里有一个蓝色的格子。我们用点符号表示固体,pch = 20。

z       x       y       scatterplot3d(x,y,z,highlight.3d=

 TRUE,col.axis="green",col.grid=

"lightblue",main="Helix",pch=20)

图2显示了一个半球的点。除了角度和坐标轴的大小注释,这个数字类似于图1。

temp        x        y        z       scatterplot3d(x, y, z,highlight.3d =TRUE,angle=120, 

col.axis = "blue", col.grid="lightblue",cex.axis=1.3, 

cex.lab = 1.1, main = "Hemisphere",pch = 20)

通过一些简单的修改,可以生成一个3D的barplot,如图所示在这个例子中。为了使情节看起来像一个barplot,type = " h "将被绘制垂直的线到x - y平面,pch = ",以避免绘制点符号lwd = 5使线条看起来像条棒。而且,不是三个向量数据帧作为第一个参数是scatterplot3d。

my.mat        dimnames(my.mat)        s3d.dat        rows = c(row(my.mat)), value = c(my.mat))
       scatterplot3d(s3d.dat, type = "h", lwd = 5, pch = " ",x.ticklabs = colnames(my.mat), y.ticklabs = rownames(my.mat),color = grey(25:1 / 40), main = "3D barplot")

词法界定的重要性在于生成函数闭包,以提供可扩展性在第3节中讨论了scatterplot3d。一个例子如何使用在著名的(至少是对S用户)树下给出了不可见的返回函数数据。在加载树数据之后,它是由scatterplot3d绘制的,并且(不可见的返回)结果被分配到变量s3d。(蓝色)点是画出来的使用类型= " h ",可以很清楚地看到这些点的x - y位置。下一步,一个线性模型(假设:体积取决于周长和高度(树)是计算出来的。而且,这个lm对象是由返回的plane3d函数(之前被分配到s3d),它会导致回归平面。仅仅为了演示目的,在最后一步,一些红色的(在a上)假想的线穿越情节)用星号表示它的点符号。

data(trees)
        s3d         my.lm         s3d$plane3d(my.lm)
        s3d$points3d(seq(10, 20, 2), seq(85, 60, -5), seq(60, 10, -10),col = "red ", type = "h", pch =
       library("mvtnorm")
       x1        dens        s3d        text(s3d$xyz.convert(-1, 10, 0.07),labels = expression(f(x) == frac(1, sqrt((2 * pi)^n *phantom(".") * det(Sigma[X]))) * phantom(".") * exp * {bgroup("(", - scriptstyle(frac(1, 2) * phantom(".")) *(x - mu)^T * Sigma[X]^-1 * (x - mu), ")")}))
      text(s3d$xyz.convert(1.5, 10, 0.05),labels = expression("with" * phantom("m") *mu == bgroup("(", atop(0, 0), ")") * phantom(".") * "," *phantom(0) *{Sigma[X] == bgroup("(", atop(3 * phantom(0) * 2,2 * phantom(0) * 3), ")")}))
       for(i in length(x1):1)
       s3d$points3d(rep(x1[i], length(x2)), x2, dens[i,], type = "l")
       for(i in length(x2):1)
       s3d$points3d(x1, rep(x2[i], length(x1)), dens[,i], type = "l")

      cubedraw  {
     cube01      c(1,0,0),c(1,0,1),1,c(1,1,0),
     c(0,1,0),c(0,1,1), c(0,1,0),0)
     cub      res3d$points3d(cub[ 1:11,], cex = cex, type = 'b', lty = 1)
     res3d$points3d(cub[11:15,], cex = cex, type = 'b', lty = 3)
}
       crgb        rr        cubedraw(rr)
       Rrb        rR        cubedraw(rR)
       rR$points3d(Rrb, col = rbc, pch = 16)


更多数据分析,还请继续关注R语言实战



合作QQ:2127198282