热线电话:13121318867

登录
2018-10-27 阅读量: 966
R来实现业务指标地图

作为任何有多地区业务的公司,如果能在地图上展示业绩,是一件多么酷的事情,下面上图片。

Rplot02.png

这张图展现的是江苏某行的存款规模,越红说明越高,苏州是第一梯队,南京,无锡市第二梯队,徐州、南通、常州是第三梯队,其他惨白的都是苏北地区,是第四梯队。当然数据方面我进行了加工,与真实数据还是有出入的,只是做个范例。

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
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子