数据可视化——三维
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”,而是实际的值。
至于怎样用,大家可以搜索一下,多用用,也欢迎留言交流。
以上是关于数据可视化——三维的主要内容,如果未能解决你的问题,请参考以下文章