本例的目的是结合地理数据和水资源数据,以说明中国人均水资源拥有量的分布情况。基本步骤是先导入地理信息数据,将其转为ggplot2可以处理的数据框格式,将水资源数据整合进来,最后绘制成图。在下图中,红色代表了人均水资源拥有量较低的地区,黄绿色代表较高的地区。多年以来,华北地区都是有名的缺水地区,而长江以南水资源相对较为丰富,这一点很容易观察出来。而西藏、青海人口数量少,使人均水资源偏高。此外,根据全国水资源公报的数字,全国平均的人均水资源量是2200立方米。我们可以根据这一数字,将低于平均数的省份单独显示出来。顺便说下,公鸡的另一只腿可不是我吃了,数据原本如此。
R代码如下:
# 加载所需扩展包
library(ggplot2)
library(gpclib)
library(maptools)
# 读取地理信息数据
load(url("http://gadm.org/data/rda/CHN_adm1.RData"))
# 人均水资源量
water <- c(1085,325,1473,3524,1079,2935,3989,2790,4147,358,2046,434
,1652,2490,451,3362,1467,871,2145,182,1000,12278,448,377,
182,1221,3135,152,4976,10000,5298,2005)
# 将数据转为数据框
gpclibPermit()
china.map <- fortify(gadm,region='ID_1')
vals <- data.frame(id =unique(china.map$id),val=water)
# 用ggplot命令绘图
ggplot(vals, aes(map_id = id)) +
geom_map(aes(fill = val), map =china.map) +
expand_limits(x = china.map$long, y = china.map$lat) +
scale_fill_continuous(low = 'red2',high ='yellowgreen',
guide = "colorbar") +
opts(title='中国人均年水资源拥有量',
axis.line=theme_blank(),axis.text.x=theme_blank(),
axis.text.y=theme_blank(),axis.ticks=theme_blank(),
axis.title.x=theme_blank(),
axis.title.y=theme_blank()) +
xlab("") + ylab("")
“公鸡的另一只腿可不是我吃了”,哈哈~~
回复删除谢谢,通过你的博客学到很多知识。
请教water的值怎么跟省份对应的呢?谢谢!
回复删除呵呵,找到了, gadm$VARNAME_1,可惜是乱码,但凑合能看懂。
删除正确,就是这样。
删除台湾怎么加上去?
回复删除关键是地图中没有台湾的数据,如果有数据的话,可以参照这个贴子 http://www.r-bloggers.com/a-brief-script-on-geographical-data-analysis-in-r/
删除评论才能看到程序吗?
回复删除