R语言环境
R3.1.1 Windows8.1
需要安装的packages: maptools,gp
绘图所需要的数据
中国地图的GIS数据 (可以此下面的网址下载)
http://cos.name/wp-content/uploads/2009/07/chinaprovinceborderdata_tar_gz.zip
是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf、bou2_4p.shp和bou2_4p.shx)
中国各省会城市的经纬度数据
城市,Jd,Wd
北 京,116.4666667,39.9
上 海,121.4833333,31.23333333
天 津,117.1833333,39.15
重 庆,106.5333333,29.53333333
哈尔滨,126.6833333,45.75
长 春,125.3166667,43.86666667
沈 阳,123.4,41.83333333
呼和浩特,111.8,40.81666667
石家庄,114.4666667,38.03333333
太 原,112.5666667,37.86666667
济 南,117,36.63333333
郑 州,113.7,34.8
西 安,108.9,34.26666667
兰 州,103.8166667,36.05
银 川,106.2666667,38.33333333
西 宁,101.75,36.63333333
乌鲁木齐,87.6,43.8
合 肥,117.3,31.85
南 京,118.8333333,32.03333333
杭 州,120.15,30.23333333
长 沙,113,28.18333333
南 昌,115.8666667,28.68333333
武 汉,114.35,30.61666667
成 都,104.0833333,30.65
贵 阳,106.7,26.58333333
福 州,119.3,26.08333333
台 北,121.5166667,25.05
广 州,113.25,23.13333333
海 口,110.3333333,20.03333333
南 宁,108.3333333,22.8
昆 明,102.6833333,25
拉 萨,91.16666667,29.66666667
香 港,114.1666667,22.3
澳门,113.5,22.2
绘图脚本
#设置当前工作目录
setwd("E:/R语言学习/")
#加载packages
library(sp)
library(maptools)
#读取省会城市经纬度数据
data <- read.csv("citylonlat.csv",header=TRUE,sep=",")
#读取各省的边界数据等
border <- readShapePoly("package/china-province-border-data/bou2_4p.shp")
#设置输出文件
#jpeg("chinamap.jpeg")
#画地图
plot(border,col=rainbow(925),ylim = c(18, 54), panel.first = grid());
#增加省会城市坐标点
points(data$Jd, data$Wd, pch = 19, col = rgb(0, 0, 0, 0.5))
#增加标注
text(data$Jd, data$Wd, data[,1], cex = 0.6, col = rgb(0,
0, 0, 0.7), pos = c(2, 4, 4, 4, 3, 4, 2, 3, 4, 2, 4, 2, 2,
4, 3, 2, 1, 3, 1, 1, 2, 3, 2, 2, 1, 2, 4, 3, 1, 2, 2, 4, 4, 2))
#增加标签的另一种方式
#pointLabel(data$Jd, data$Wd, data[,1], offset = 0, cex = .6)
#设置坐标轴
axis(1, lwd = 0); axis(2, lwd = 0); axis(3, lwd = 0); axis(4, lwd = 0)
#输出结果到文件
#dev.off()
绘制的中国地图
参考
http://cos.name/2009/07/drawing-china-map-using-r/
http://yihui.name/cn/2008/10/china-map-and-city-locations-with-r/
http://yihui.name/cn/2008/10/avoid-label-overlap-pointlabel-in-maptools/