数据可视化——三维

Posted yuanzhoulvpi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据可视化——三维相关的知识,希望对你有一定的参考价值。

R编程采用以下种方法对三维空间数据进行显示和可视化。主要介绍以下两个方法,因为感觉第一个很简单啦,第二个感觉很漂亮。是非常漂亮。



第一个


介绍的第一个函数叫persp()函数。这个不需要安装任何安装包。

先看一个例子:

运行example('persp')

产生的第一个图像如下:

下面一个图像是同一个数据的更加详细的视图:

数据可视化——三维

最后,我们进行模拟的三维表面面积展示:

数据可视化——三维




Persp 函数如下所示: 

persp(x = seq(0, 1, length.out = nrow(z)),   y = seq(0, 1, length.out = ncol(z)),   z, xlim = range(x), ylim = range(y),   zlim = range(z, na.rm = TRUE),   xlab = NULL, ylab = NULL, zlab = NULL,   main = NULL, sub = NULL,   theta = 0, phi = 15, r = sqrt(3), d = 1,   scale = TRUE, expand = 1,   col = "white", border = NULL, ltheta = -135, lphi = 0,   shade = NA, box = TRUE, axes = TRUE, nticks = 5,   ticktype = "simple", ...) 

对此函数的部分参数进行了说明:

x, y 坐标线的位置。

z 坐标值。

xlim,  ylim, zlim 三个坐标轴的限值。

xlab, ylab, zlab 三个坐标轴的标签。

main, sub 主标题和副标题。

theta, phi 视角:theta 是方位角,phi 是余纬度, 

r 到框中心的眼点距。

d 视觉强度调整:大于 1 的值变小,小于 1 的值变大 。

scale :布尔值,可以保持屏幕比例:“TRUE”意味着对各轴进行变换,“FALSE” 意味着保持屏幕比例。


这里借鉴一个简单、实用的例子。在例子中,将 gumbel copula 数据用作我们的 x 和 y, 将 dCopula 值用作 z。gumbelCopula 函数产生阿基米德 copula;dCopula 是 copula 的密度函 数。示例代码如下所示: 


install.packages('copula')

library(copula)

gc <- gumbelCopula(1.5,dim = 2)

persp(gc,dCopula,col = 'red')


结果如下:

数据可视化——三维


让我们运行一个更加简单的数据集:women


summary(women)

fun <- function(x,y) {x * y}

persp(x = women$height,y = women$weight,z = outer(women$height,women$weight,fun))


数据可视化——三维

数据可视化——三维



第二个方法


使用cloud3d。这个需要安装vrmlgen这个包。这个产生的文件格式为VRML格式,可以使用VRML查看器来查看(我推荐使用Cortona)来查看。

第一步数据准备,下载数据:

mydata <- read.table('http://archive.ics.uci.edu/ml/

                     machine-learning-databases/auto-mpg/auto-mpg.data')

colnames(mydata) <- c('mpg','cylinders','displacement','horsepower','weight',

                      'accerlation','model.year','origin','car.name')


第二步进行画图:


install.packages('vrmlgen')

library(vrmlgen)


cloud3d(mydata$mpg ~ mydata$cylinders * mydata$weight,filename = 'out.wrl')


这些准备好你就可以看到炫目的视觉效果啦(可能会有点等待,允许加载项,打开的窗口还是IE,啧啧啧,一个很好的浏览器)




从这个图可以看出来,气缸数量越少,每加仑行驶的英里数越高!!!

而且非常明显。

当然,还有其他的信息,欢迎留言。

至于cloud3d函数的用法,请看下方:

cloud3d(x, y = NULL, z = NULL, labels = rownames(data),  filename = "out.wrl", type = "vrml",  pointstyle = c("s", "b", "c"), metalabels = NULL,  hyperlinks = NULL, cols = rainbow(length(unique(labels))),  scalefac = 4, autoscale = "independent",  lab.axis = c("X-axis", "Y-axis", "Z-axis"),  col.axis = "black", showaxis = TRUE, col.lab = "black",  col.bg = "white", cex.lab = 1, htmlout = NULL,  hwidth = 1200, hheight = 800, showlegend = TRUE,  vrml_navigation = "EXAMINE", vrml_showdensity = FALSE,  vrml_fov = 0.785, vrml_pos = rep(scalefac + 4, 3),  vrml_dir = c(0.19, 0.45, 0.87, 2.45),  vrml_transparency = 0, lg3d_ambientlight = 0.5) 

这些参数和其他函数的参数十分类似,显著的差别如下所示: 

• filename 参数假设您想要生成输出信息的文件。 

• 出现的窗口显示器的尺寸参数。

 • 有几个 VRML指令。

 • 有趣的是,很多参数并不默认为“NULL”,而是实际的值。


至于怎样用,大家可以搜索一下,多用用,也欢迎留言交流。



以上是关于数据可视化——三维的主要内容,如果未能解决你的问题,请参考以下文章

借助WebGL三维可视化技术检索3D动态图像

借助WebGL三维可视化技术检索3D动态图像

R使用tsne进行高维数据可视化实战:二维可视化三维可视化

Unity制作数据可视化三维场景

三维可视化名词解释-体绘制体素体数据体绘制算法

Python使用tsne进行高维数据可视化实战:二维可视化三维可视化