用ggmap包举办地动数据的可视化
最近又发明白一个较量好玩的包ggmap。从名字上可以揣摩出来,它的浸染就是将ggplot2和map相团结。这样R语言用户能利便的获取各类静态舆图数据,并在其基本上利用强大的ggplot画图东西。ggmap包整合了四种舆图资源,别离是Google、OpenStreetMaps、Stamen和Cloudmade。为了演示ggmap的浸染,本例是从地动信息网获取最近一周的地动数据,获得其经纬度,然后以散点形式绘制在google舆图上,别的也显示地动产生的密度预计。这个思路本质上和之前的一篇博文是一致的,但用ggmap包实现起来更为简朴。
# 加载扩展包
library
(ggmap)
library
(animation)
library
(XML)
# 从网页上抓取数据,并举办清理
webpage <-
'http://data.earthquake.cn/datashare/globeEarthquake_csn.html'
tables <-
readHTMLTable
(webpage,stringsAsFactors =
FALSE
)
raw <- tables[[6]]
data <- raw[-1,
c
(
'V1'
,
'V3'
,
'V4'
)]
names
(data) <-
c
(
'date'
,
'lan'
,
'lon'
)
data$lan <-
as.numeric
(data$lan)
data$lon <-
as.numeric
(data$lon)
data$date <-
as.Date
(data$date,
"%Y-%m-%d"
)
# 用ggmap包从google读取舆图数据,并将之前的数据标注在舆图上。
ggmap
(
get_googlemap
(center =
'china'
, zoom=4,maptype=
'terrain'
),extent=
'device'
)+
geom_point
(data=data,
aes
(x=lon,y=lan),colour =
'red'
,alpha=0.7)+
stat_density2d
(
aes
(x=lon,y=lan,fill=..level..,alpha=..level..),
size=2,bins=4,data=data,geom=
'polygon'
)+
opts
(legend.position =
"none"
)
更好玩的作法就是按照地动产生的日期生成差异的静态图,然后用animaiton包将其整合为一个gif动画。
# 为了生成动画,先筹备好一个画图函数 plotfunc <- function (x) { df <- subset (data,date <= x) df$lan <- as.numeric (df$lan) df$lon <- as.numeric (df$lon) p <- ggmap ( get_googlemap (center = 'china' , zoom=4,maptype= 'terrain' ),,extent= 'device' )+ geom_point (data=df, aes (x=lon,y=lan),colour = 'red' ,alpha=0.7) } # 获取地动的日期 time <- sort ( unique (data$date)) # 生成并生存动画 saveMovie ( for ( i in time) print ( plotfunc (i)))
|
#p#分页标题#e#
ggmap包中尚有其它一些很是有用的函数。譬喻geocode函数可以按照地名字符串来查询经纬度,gglocator雷同于根基包中的locator,它按照鼠标的点选来返回其坐标值。别的一个是mapdist函数,可以返回两点之间的舆图间隔和行驶时间。团结这几个函数可以直接在R中绘制舆图,选择你的出发地和方针地,然后得到两地之间的间隔。虽然你还可以共同GPS等其它数据,缔造出其它有意思的图形。