R语言可视化——地图填充与散点图图层叠加

今天跟大家分享关于如何在地图图层上添加散点图。

散点图需要精确的经纬度信息才能在叠加的图层上进行映射,因此我们选用中国省级轮廓地图以及各省省会城市的经纬度进行案例演示。

加载包:

library(ggplot2)

library(plyr)

library(maptools)

library(sp)

导入中国省界地图:

china_map<-readShapePoly("c:/rstudy/bou2_4p.shp")

data1<- china_map@data

data2<- data.frame(id=row.names(data1),data1)

数据格式转化及业务数据合并:

china_map1 <- fortify(china_map)

china_map_data <- join(china_map1,data2, type = "full")

mydata <- read.csv("c:/rstudy/geshengzhibiao.csv")

china_data <- join(china_map_data, mydata, type="full")

各省省会城市经纬度数据:

province_city <- read.csv("c:/rstudy/chinaprovincecity.csv")

省级轮廓地图上添加散点图图层:

ggplot(china_data,aes(long,lat))+

geom_polygon(aes(group=group),fill="white",colour="grey60")+

geom_point(data=province_city,aes(x=jd,y=wd),colour="red")+

coord_map("polyconic") +

theme(

panel.grid = element_blank(),

panel.background = element_blank(),

axis.text = element_blank(),

axis.ticks = element_blank(),

axis.title = element_blank()

)

接下来,我们可以给各省的省会城市赋值,将散点图的大小映射给连续性数值变量,使其变成气泡图。

province_city$zhibiao<-NULL

province_city$zhibiao<-rnorm(34,100,50)

windowsFonts(myFont = windowsFont("微软雅黑"))

ggplot()+

geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="grey95",colour="grey80")+

geom_point(data=province_city,aes(x=jd,y=wd,size=zhibiao),shape=21,fill="#8E0F2E",colour="black",alpha=0.4)+

scale_size_area(max_size=8)+

coord_map("polyconic") +

guides(size=guide_legend(reverse=TRUE,title=NULL))+

ggtitle("某公司2015~2016年度营业状况分布图")+

theme(

title=element_text(family="myFont"),

panel.grid = element_blank(),

panel.background = element_blank(),

axis.text = element_blank(),

axis.ticks = element_blank(),

axis.title = element_blank(),

legend.position =c(0.15,0.4),

legend.background=element_rect(colour="white",fill="white"),

legend.text.align=1

)

最后我们来处理标签问题:

因为这里使用了散点图(气泡图)作为数据展示方式,而作为底图的地图图层仅仅是作为定位信息,没有包含任何的数据信息,而且页面整体上没有太多地方放置省名称标签,所以我们有选择性的显示前五个数据所代表的省份标签,以防标签太多导致页面杂乱。

labelper<-province_city[order(province_city[,5],decreasing=T),][1:10,]

ggplot()+

geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="grey95",colour="grey80")+

geom_point(data=province_city,aes(x=jd,y=wd,size=zhibiao),shape=21,fill="#8E0F2E",colour="black",alpha=0.4)+

scale_size_area(max_size=8)+

coord_map("polyconic") +

geom_text(aes(x=jd+2.3,y=wd,label=city),size =3,family="myFont",fontface="plain",data=labelper) +

guides(size=guide_legend(reverse=TRUE,title=NULL))+

ggtitle("某公司2015~2016年度营业状况分布图")+

theme(

title=element_text(family="myFont"),

panel.grid = element_blank(),

panel.background = element_blank(),

axis.text = element_blank(),

axis.ticks = element_blank(),

axis.title = element_blank(),

legend.position =c(0.15,0.4),

legend.background=element_rect(colour="white",fill="white"),

legend.text.align=1

)

如果甲你想要添加全部的标签,直接使用province_city中的city标签即可:

ggplot()+

geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="grey95",colour="grey80")+

geom_point(data=province_city,aes(x=jd,y=wd,size=zhibiao),shape=21,fill="#8E0F2E",colour="black",alpha=0.4)+

scale_size_area(max_size=8)+

coord_map("polyconic") +

geom_text(aes(x=jd+2.3,y=wd,label=city),size =3,family="myFont",fontface="plain",data=province_city) +

guides(size=guide_legend(reverse=TRUE,title=NULL))+

ggtitle("某公司2015~2016年度营业状况分布图")+

theme(

title=element_text(family="myFont"),

panel.grid = element_blank(),

panel.background = element_blank(),

axis.text = element_blank(),

axis.ticks = element_blank(),

axis.title = element_blank(),

legend.position =c(0.15,0.4),

legend.background=element_rect(colour="white",fill="white"),

legend.text.align=1

)

原文发布于微信公众号 - 数据小魔方(datamofang)

原文发表时间:2016-10-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据小魔方

think-cell chart系列5——堆积不等宽柱形图

今天要分享的是think-cell chart系列的第五篇——堆积不等宽柱形图。 其实要问我为什么对think-cell chart这么情有独钟,现在给出答案—...

4415
来自专栏数据小魔方

蝴蝶图(升级版)

今天跟大家分享的是另一种升级版的条形蝴蝶图! ▽▼▽ 之前曾出过一期关于蝴蝶图的教程,是一个关于Facebook、Twitter用户年龄分布的图表,今天之所以还...

3206
来自专栏小詹同学

20秒画完小猪佩奇“社会人”,程序猿的手法是你想不到的独特

今年社交平台上最火的带货女王是谁?范冰冰?杨幂?Angelababy?不,是猪猪女孩小猪佩奇。

1461
来自专栏WOLFRAM

用Wolfram语言玩转&我的世界&(Minecraft)

不久前,我分享了一个软件包,用于从安装在 Raspberry Pi或另一台计算机上的 Mathematica 控制 Pi 版的 Minecraft。 您可以使用...

2032
来自专栏iOSer成长记录

iOS-AVFoundation自定义相机详解

4407
来自专栏机器学习养成记

十九大讲话文本分析(R语言)

18日观看了十九大的开幕直播,聆听了习大大的重要讲话,如此重要的讲话,怎能不结合我们的文本挖掘技术来深刻学习一下呢!这次的文章就让我们用R里面的jiebaR包和...

3187
来自专栏Renderbus云渲染农场

vray渲染速度慢的影响因素和提升技巧-Renderbus

模型因素 较为复杂的模型(特别是存在较多细小转角的模型),会耗费更多的渲染计算时间。模型的复杂程度对渲染的影响较大,这个问题可以说是“硬件伤”。

2284
来自专栏数据小魔方

图表案例——简约却不简单的图表制作技巧

我们通常看到的小而美的图表,一般都是经过图表制作者深层次加工过的成品。 而要想了解一个规范的商务图表制作过程,对图表的拆解与还原就显得非常重要。 今天的案例是关...

3669
来自专栏PPV课数据科学社区

数据分析系列剧第五集:用户满意度研究(二)

本文续数据分析系列剧第五集:用户满意度研究(一)。 经过一周的调研,小蔡回收了问卷,并将问卷数据录入到SPSS中,在老刘的帮助下制作四分图,具体操作步骤如下: ...

4067
来自专栏Windows Community

UWP 手绘视频创作工具技术分享系列 - 位图的绘制

前面我们针对 SVG 的解析和绘制做了介绍,SVG 是图片的一种形式,而另一种很重要的图片是:位图,包括 png、jpeg、bmp 等格式。位图的基本规则是,组...

2817

扫码关注云+社区