三维散点图:R语言篇

三维散点图:R语言版

 

上一期用Python做了一个三维散点图,这一次我们用R语言来做。

 

首先还是先看效果:

 三维散点图:R语言篇_第1张图片


三维散点图:R语言篇_第2张图片

 

 三维散点图:R语言篇_第3张图片

 

 三维散点图:R语言篇_第4张图片

 

 

如果有上一次用Python的matplotlib的同学实现了的,会被Python那恐怖至极的速度给吓坏了——可不是么,Python的特性之一,就是慢……不但慢,还巨消耗资源。

 

那么这一次你运行一下R语言的脚本,肯定就被震惊了——这么会这么快!因为这个三维散点图的包,是用openGL写的,纯C开发——嗯,和CS 啥的三维游戏用的是同一种技术。

 

好了,下面放出代码:

library("rgl")

library("maptools")

#leaflet包在这里面,主要是用来设置颜色用。

library("leaflet")

 

#下面是加载数据部分

path <-"E:/example/ch1/data3/"

eq2013 <-read.csv(paste(path,"eq2013.csv",sep =""))

pnt <-readShapePoints(paste(path,"world.shp",sep =""))

kline <-readShapeLines(paste(path,"eqKernel.shp",sep =""))

 

#这个是密度等值线的高度

klineZ <-kline@data$Contour

 

#下面这两句是把作为背景的世界地图的高度都设置为0

pz <-vector(length = length(pnt))

pz[] <-0

 

#设置深度小于60公里的浅源地震为红色、60-300的中源地震为绿色

#深度超过300公里的深源地震为黑色

cl<-c(ifelse(eq2013$z<60,'red',ifelse(eq2013$z<300,'green','blue')))

 

#设置背景为灰黑色

rgl.bbox(emission='grey40',color='grey40',xlen= 0,ylen = 0,zlen = 0)

 

#首先画地震点和深度

plot3d(eq2013$x,eq2013$y,eq2013$z*-1,col=cl,lit=T,xlab='X',ylab= 'Y',zlab = 'Z')

 

#增加作为背景的世界地图

points3d(pnt$coords.x1,pnt$coords.x2,pz,color='#DAB96E',alpha=0.7)

 

#设置密度等值线的颜色色带

pal <-colorNumeric(c("darkgreen", "yellow","orangered"),klineZ)

#绘制密度等值线。

for(i in1:length(kline)){

  klxy<-slot(slot(kline@lines[[i]],"Lines")[[1]],"coords")

 lines3d(klxy[,1],klxy[,2],klineZ[i]*20,col=pal(kline@data$Contour[i]))

}

 

好了,打完收工,需要代码和数据的,还是老规矩,关注公众号,然后发送2,获取邮箱,所有的内容,都通过邮箱获取即可。

 三维散点图:R语言篇_第5张图片

你可能感兴趣的:(GIS,数据分析,可视化)