原文地址:点击打开链接
R语言有着令人称赞的可视化能力,在这篇文章中,我们试着用R语言来展示地图数据,也就是绘制地图,并在地图上展示数据的分布。
> library(sp)
>library(maptools)#windows系统加载时都会提示以下信息,对绘制影响不大。
Checking rgeos availability:FALSE
Note: when rgeos is not available,polygon geometry
which has a restricted licence. It isdisabled by default;
to enable gpclib, typegpclibPermit()
> library(ggplot2)
地图数据基本可以分为点、线、面三种数据,在maptools包内分别有对应的函数来读取(readShapePoints、readShapeLines和readShapePoly),这里我们采用readShapePoly函数。
> x <-readShapePoly(file.choose()) #读入bou2_4p.shp文件
> class(x) #x是sp包的数据框
[1] "SpatialPolygonsDataFrame
attr(,"package")
[1] "sp"
> names(x)
[1] "AREA"
[6] "ADCODE99"
> china <-fortify(x)#将地理信息文件转换为data.frame格式数据
Regions defined for each Polygons
> head(china)
long
1 121.4884 53.33265
2 121.4995 53.33601
3 121.5184 53.33919
4 121.5391 53.34172
5 121.5738 53.34818
6 121.5840 53.34964
转换后china数据包含7列数据,long表示精度,lat表示纬度。
现在我们就可以绘制原始的地图了。
> p <-ggplot(china,aes(x=long,y=lat))+geom_polygon(aes(group=id),fill=I("red"))
> p1 <-p+theme(panel.background=element_rect(fill="lightblue"))+coord_map()
> p2 <-p1+theme(panel.grid=element_blank())
> p3 <-p2+theme(axis.title=element_blank())
> p4 <-p3+theme(axis.ticks=element_blank())
> p5 <-p4+theme(axis.text=element_blank())
> p6 <- p5 +theme(plot.background=element_rect(fill="lightblue"))+theme(legend.background=element_rect(fill="lightblue"))
> p6
参考资料