package:Package ‘ggplot2’
ColorChart
参考帖:
#万分感谢刘万祥的帖子(见参考帖1),基本是抄他的,我做了删减与完善,将大量的无关结果的说明删掉,新增了一些新手需要知道的说明,完善了坐标问题等#
1. http://chuansong.me/n/1434693
2. http://cos.name/2014/08/r-maps-for-china/
百度拾取坐标系统:
http://api.map.baidu.com/lbsapi/getpoint/index.html数据来源:
http://news.cngold.com.cn/20160326d1903n66387290.html
- #将所需的包放在了最前面
- require('maptools')#加载maptools包,读取shp格式文件地图数据
- require('ggplot2')#加载ggplot2包,提供地理学专业坐标系
- require('plyr')#加载plyr包,合并数据框
- require('xlsx')#加载xlsx包,读取xlsx格式文件
- china_map<-readShapePoly('C:/Program Files/R/R-3.3.2/library/Chinamap/bou2_4p.shp')#引号内为bou2_4p.shp文件路径
- x <-china_map@data#读取行政信息
- xs <-data.frame(x,id=seq(1:925)-1)#引入id信息,方便后面与chia_map1合并,-1为了与chia_map1一致同为从0开始
- china_map1 <-fortify(china_map)#转化为数据框
- china_map_data <-join(china_map1, xs, type = "full")#合并两个数据框,joining by id
- mydata<- read.xlsx('D:/Project_eg/table/province.xlsx',#province.xlsx路径
- sheetName = 'eg',#读取province.xlsx文件中sheet表的名称,注意加引号
- header =T,#T即为TRUE缩写,表示有标题
- encoding ='UTF-8')#UTF-8使xlsx文件中中文显示正常
- china_data <-join(china_map_data,mydata,type='full')#合并两个数据框,joining by NAME
- ggplot(china_data,aes(long,lat))+
- geom_polygon(aes(group=group,fill=人口),colour='ivory3')+#以人口的值区分各省份的颜色,col即colour缩写,为边界颜色
- scale_fill_gradient(low='white',high='deepskyblue4')+#low,high对应的为颜色值,代表最小值与最大值
- coord_map('polyconic') +
- geom_text(aes(x =longitude,y = latitude,label = tag),data=mydata)+#横坐标x对应经度,纵坐标y对应维度,经纬度确认的坐标为标签显示的位置,label即标签为图中显示的值
- theme(
- panel.grid = element_blank(),
- panel.background = element_blank(),
- axis.text = element_blank(),
- axis.ticks = element_blank(),
- axis.title = element_blank(),
- legend.position = c(0.85,0.45)#调整图例位置
- )
几点说明
1.为什么要写此贴,主要是自己在学习,作为记述;也方便道友们可以更加方便借鉴;
2.代码中所需的shp地图文件即xlsx数据文件均在压缩包中,本打算将r文件一块儿放入压缩包中,后决定不放入,方便新手学习,可直接复制的代码主要为时间比较紧的选手准备的;
3.excel中的坐标参照了省会坐标,平均坐标,还有人为的调整,如果不喜欢显示位置,可以到百度拾取坐标系统中查坐标,然后在excel文件中修改;
4.colors值请参照Colorchar文件(压缩包中有);
5.代码我知道意思的基本已标出,未表明的我也不是很懂;
6.某些数据(如流行病学方面)中某些省份的数据可能为0,如果想让地图中数据为0的省份不显示,xlsx文件标签tag值为空即可,如果是txt文件,将对应的tag值设为NA;读取txt文件的命令
- mydata <- read.table('D:/Project_eg/table/province.txt',#province.xlsx路径