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 条评论
登录 后参与评论

相关文章

来自专栏Material Design组件

Material Design — 分隔线(Dividers)

376120
来自专栏数据小魔方

上帝视角——给世界一个特写~

最近在研究使用R包制作动画图表,也就是类似GIF动图,感觉很有趣,也是动态图表呈现的一个非常独特的领域,刚刚研究出了些成果,今天这篇分享使用GIF动画+球型投影...

36360
来自专栏每日一篇技术文章

SceneKit - AR换装应用解决方案

由于今年是AR元年,在苹果推出的ARKit框架之后,各行各业都在马不停蹄的玩起了创意,希望在自己的应用基础上加入AR的元素

36410
来自专栏数据小魔方

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

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

51650
来自专栏数据小魔方

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

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

39390
来自专栏数据小魔方

蝴蝶图(升级版)

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

33560
来自专栏WOLFRAM

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

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

45320
来自专栏Windows Community

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

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

29970
来自专栏iOSer成长记录

iOS-AVFoundation自定义相机详解

71470
来自专栏数据小魔方

think-cell chart系列8——百分比堆积面积图

今天跟大家分享的是think-cell chart系列的第8篇——堆积面积图。 实在是没有找到合适的案例图,所以今天就一步一步自己做案例了。 作图表先要有数据...

39960

扫码关注云+社区

领取腾讯云代金券