R语言可视化——ggplot绘制中心密度辐射图

今天这篇算是之前ggplot2图表系列的增补。

因为在ggplot2中一直没有看到好的关于密度辐射图(或者称它为热力辐射图,就是那种PowerMap中可以通过颜色色度探查区域指标分布密度的图表类型)的合适解决方案,最近在看github官网上ggmap的介绍帖,看到作者在ggmap函数中嵌套了geom_polygon图层并并使用fill=..level..参数和stat="density_2d"来来制作类似的热度辐射图。

我就突发奇想,如果不是通过ggmap而是通过ggplot函数是否也可以呢,果然也是可以出效果的,先将方法介绍如下:

首先需要加载如下包:

library(ggplot2) library(plyr) library(maptools) library(ggmap)

接下来导入两个数据集:

其中一个是中国省级边界轮廓图,早期关注过数据小魔方的用户大概都知道,我曾经共享过一个名为rstudy的文件包(我在刘万祥老师的公众号里发现的,现在应该也还可以获取),如果手上没有数据可以添加魔方学院的QQ群,在群共享里查找R语言资料。(共享文件比较多,可能需要找一阵子)

另一个是之前在讲解REmap热度辐射图时用过的城市价值指标数据集,推送后会共享在魔方学院的QQ群里。

导入数据集:

china_map<-readShapePoly("c:/rstudy/bou2_4p.shp") #地图数据 china_map1 <- fortify(china_map) #转换为数据框 data<- read.csv(file="D:\\R\\map\\MoveChart\\cityvaluetop10.csv",header=T) #城市指标数据

因为这里使用地图仅仅是作为底图用作定位信息,可以说是陪衬,所以无需对地图和城市指标进行合并。

以下是图表的正式生成过程:

1、画底图:

p<-ggplot()+ geom_polygon(data=china_map1,aes(x=long,y=lat,group=group),fill="#005A32",col="white")

2、添加热度图层

p<-p+geom_polygon(data=data,aes(x=lon,y=lat,fill = ..level..), stat="density_2d", alpha = .3, color = NA)+coord_map("polyconic")

3、调整热度图层

p<-p+scale_fill_gradient2( low = "white",mid="yellow", high = "red")

4、清楚冗余元素

p<-p+theme_nothing()

5、可以给以上热图添加散点辅助观测

p<-p+geom_point(data=data,aes(x=lon,y=lat),col="white")

6、当然,你也可以给三点指定城市的指标数据使其变成气泡图

p<-p+geom_point(data=data,aes(x=lon,y=lat,size=prob),col="white")+scale_size_area(max_size=6)

#记得清除掉第5步,即从第四步开始

至于实际的数据标签,指标名称和区域名称,酌情添加,但是针对地图类图表,数据展示到位即可,不建议添加太多标签,影响美观性。

针对本图表类型,核心参数是第二个geom_polygon()中的fill = ..level..和stat="density_2d"统计变换,使得多边形图转换成为二维水平密度图,但是至今我还没有搞懂里面的算法是什么样的,只能大概模仿出来,至于怎么用,看大家自由发挥了,效果跟真正的热力辐射图还是有些差别,但是勉强能用。

总结下,用到的所有代码如下:

ggplot()+ geom_polygon(data=china_map1,aes(x=long,y=lat,group=group),fill="#005A32",col="white")+ geom_polygon(data=data,aes(x=lon,y=lat,fill = ..level..), stat="density_2d", alpha = .3, color = NA)+ coord_map("polyconic") + geom_point(data=data,aes(x=lon,y=lat,size=prob),col="white")+ scale_size_area(max_size=6)+ scale_fill_gradient2( low = "white",mid="yellow", high = "red")+ theme_nothing() #这一句清空主题的代码是ggmap包中的,必须加载才能用

感兴趣的小伙伴儿可以移步去github官网上搜索ggmap官方介绍,里面使用ggmap调用谷歌地图做的热度图,效果很棒。

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

原文发表时间:2016-12-29

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

体育竞技游戏的团队AI

很多人问游戏AI该怎么做?随着游戏类型的多元化,非 MMO或者卡牌的游戏越来越多,对AI的需求也越来越强了。而市面上关于 AI的书,网上找得到的文章,也都流于一...

1854
来自专栏机器之心

学界 | UC Berkeley提出新型分布式框架Ray:实时动态学习的开端

3294
来自专栏木子昭的博客

InDesign转曲字体 导出PDF的技巧

2126
来自专栏量子位

从今天起,TensorFlow 1.9开始支持树莓派了

几个小时前,TensorFlow正式宣布TensorFlow 1.9开始支持树莓派了。

1320
来自专栏AI研习社

Github项目推荐 | 用于自然语言处理的开源 Python 库 —— PyTorch-NLP

PyTorch-NLP 是用于自然语言处理的开源 Python 库,它构建于最新的研究之上,可以帮助开发者快速开发原型。PyTorch 带有预训练嵌入(pre-...

2354
来自专栏大数据挖掘DT机器学习

在业务分析中实现商业洞察 – Excel商业智能分析报表的玩法

一套完整的BI报表应该至少具备以下四个条件: 条件一:能够批量处理有一定规模的数据; 条件二:能够保证数据的时效性及准确性; 条件三:能够将实际业务中所涉及的所...

4018
来自专栏互联网技术栈

Google Analytics 维度和指标

“维度”是指数据的属性。举例来说,“城市”维度表示的是发起会话的城市,例如“巴黎”或“纽约”。“网页”维度表示的是用户浏览过的网页的网址。

1082
来自专栏BestSDK

OpenAI 开源机器人模拟 Python 库:优化API接口提升400%处理速度

在OpenAI的许多项目中都使用域随机化技术。 最新版本的mujoco-py支持支持自动的(headless)GPU 渲染,与基于CPU的渲染相比,它的速度有4...

40711
来自专栏AI2ML人工智能to机器学习

当arXiv遇到Twitter

arXiv是一个开放的存放预备版(preprint)文章的地方。 这个Cornell University在1991开启的项目, 因为Grigori Perel...

913
来自专栏大数据挖掘DT机器学习

数据挖掘知识点总结(Microsoft 关联规则分析算法)

前言 本篇继续我们的微软挖掘算法系列总结,前几篇我们分别介绍了:Microsoft决策树分析算法、Microsoft聚类分析算法、Microsoft Naive...

3846

扫码关注云+社区

领取腾讯云代金券