2018-10-27
阅读量:
966
R来实现业务指标地图
作为任何有多地区业务的公司,如果能在地图上展示业绩,是一件多么酷的事情,下面上图片。
这张图展现的是江苏某行的存款规模,越红说明越高,苏州是第一梯队,南京,无锡市第二梯队,徐州、南通、常州是第三梯队,其他惨白的都是苏北地区,是第四梯队。当然数据方面我进行了加工,与真实数据还是有出入的,只是做个范例。
R语言制作图表的步骤很简单,一般无非是以下流程,很多人想不明白为什么必须要用R语言来画图,有两个优点:1、可以画一些excel无法画的图,如地图等,2、可以自动作图,每次把数据更新一下,无论是文本,还是表格的格式,运行程序就可以一键生成。
第一步:导入必用包,不管什么包,我一般全部默认,否则有时就会出些莫名其妙的报错,原则是“不管白包黑包,只要能画图就是好包”,“少一包不如多一包”。CA=windowsFont("微软雅黑")定义自己喜欢的字体。
setwd("c:/r/map/")
library(ggplot2)
library(sp)
library(maptools)
library(mapproj)
library(maps)
windowsFonts(CA=windowsFont("微软雅黑"))
第二步:读入地图数据信息,这边导入的是到地市的中国地图SHP文件,我们想展现的是江苏部分,需要筛出来,这样我们用江苏的地区代码32,为什么是32呢,想想江苏同学的身份证开头吧,所以要筛到那个层级就看身份证开头,到南京的话就筛选3201。前面在某文章看到复杂的筛选方法,还要反查代码,还是觉得我这个取巧办法好。
china_shp<-readShapePoly("STATE_poly")
jiangsu<-china_shp[substr(as.character(china_shp$ADCODE99), 1, 2) == "32",]
jiangsu1<-fortify(jiangsu)
第三步:读取业务信息:zhibiao.csv是各市对应指标,city.csv是每块地市图的中心坐标及地市名称。
myepidat = data.frame(id = unique(sort(jiangsu1$id)))
tmp = read.csv("zhibiao.csv")
myepidatzhibiao=tmpzhibiao
city <- read.csv("city.csv")
第四步:画出精美图形,先画地图的底图,再加上地市名称,再根据指标情况涂上深浅颜色。
p<-ggplot(myepidat)
p<-p+geom_map(aes(map_id = id, fill =zhibiao),color="pink3", map = jiangsu1)
p<-p+geom_point(aes(x=long,y=lat),color="red",data=city)
p<-p+geom_text(aes(x =long,y = lat+0.15,label = city),data = city,color="black",size=4,family="CA")
p<-p+scale_fill_gradient(high = "red",low = "white")
p<-p+expand_limits(x=jiangsu1
long,y=jiangsu1lat)+coord_map()
p<p+theme(panel.grid=element_blank(),panel.background=element_blank(),axis.text=element_blank(),
0.0000
0
2
关注作者
收藏
评论(0)
发表评论
暂无数据
推荐帖子
0条评论
0条评论
1条评论