首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R语言绘图——R语言绘制热地图实战

写在前面

上了两天班,又迎来了周末时光(那些假期为8天的朋友请自行消失),这周过的是真心累,不过想到又要和各位朋友见面了就不免有些兴奋,疲惫的身躯一下子就好了。上一期文章中,笔者讲述了怎么使用python构建决策树算法,通过那篇文章初步认识到了决策树的相关算法流程与核心构成,至于决策树的可视化小编会在适当的时候予以补充。这一期文章中,小编准备讲述一下怎么使用R语言绘制热力图。为什麼要将这个话题呢,这源自于小编最近的工作常态,最近小编频繁接触热力图的绘制,并且要不断地将其做成报告形式。作为一名偷懒爱好者,小编绝对不能忍受这种过于频繁的机械化操作,而且热力图的绘制对于很多桌面式软件来说还是存在一定的不便的。这些软件的劣势主要表现在两个方面:其一,需要人为录入经纬度信息(office系列,虽然office2016后增加了bing地图的支持,但那只是针对世界地图而已,如果你要绘制某区域地图,仍然需要录入经纬度信息);其二,不便于程式化自动化操作(office,Arcgis,Tableau)。所以考虑到这些劣势,小编最终还是决定使用程序来解决这一问题。其实在用程序解决热力图中,python和R语言都可以实现,但是为什麼小编最终决定使用R语言来实现这一功能呢,那是因为R语言中的地图包以及ggplot2包真的太有诱惑力了。当然小编在以后的python绘图系列教程中也会介绍怎么使用python去绘制热力图,所以不用担心小编跑偏。说了这么多废话,下面让我们正式开始吧!

第一讲:准备工作

使用R语言绘制热力图离不开三件宝物:第一,你需要绘制区域的Shape文件和拟展示数据集;第二,相关的绘图包;第三,你的创造力。最后一点,小编给不了你,只能你自己去多加努力了。因为小编本文将讲述怎么在绘制中国各省份的人口分布热地图,所以就需要中国地图的Shape文件以及中国各省份的人口数据,关于这一点小编已经为那些准备实践的朋友准备好了,请直接下载压缩文件DataSet.zip。解压缩后,会发现压缩包中有四个文件,其中三个文件是Shape一体化文件,你不需要改动,使用时仅仅使用那个后缀为shp的文件即可,另外一份Excel文件是各省的人口情况,你可以随时添加其它数据。现在已经将第一件宝物送给你们了,那么接下来就是要送给你们第二件礼物了,那就是在进行实践之前必须安装一些R语言包(这一点类似与Python中的库)。

首先打开你的R语言命令窗口(这里必须再向各位推荐一下使用R语言的正确姿势,首先在R语言官网中www.r-project.org下载适合你电脑版本的R语言版本,然后进行安装;在安装完成之后,下载Rstudio进行安装,这样你就可以使用Rstudio作为你的R语言开发平台了,这个平台绝对是你使用R语言的最优选择。)在安装好这些平台之后,下面就可以进入R语言的世界了。打开Rstudio,然后在其命令行中输入以下命令:

第一条语句安装了包,这个R语言包时R语言中最为经典的绘制地图的包,一般在R语言中绘制地图使用这一个包就完全可以了,而且其语法非常简单,如果你想绘制地图的话,只需要在命令行中输入以下命令:

使用以上命令你便绘制一副世界地图以及一副美国各郡的地图,正如下面所示。

maps绘制地图

然而maps包缺少对中国地图的支持,所以你无非使用maps包进行中国地图或者中国区域的绘制,这对于自豪的中国人来说自然丝毫不能忍,于是mapdata包就应运而生。在你完成mapdata包的安装之后,在命令行中输入以下命令,便可以得到一幅中国地图。

mapdata绘制中国地图

细心的朋友会看看到一件很惊讶的事情,那就是所绘制的中国地图中竟然没有重庆市,这不是上海重庆人民的感情嘛,所以为了修正mapdata在绘制中国地图中的这种缺陷,便诞生了maptools包,这种包专门用来处理各种地图的shape文件,现在小编前面送给你们的第一件礼物终于要登上历史舞台了。

maptools绘制中国地图

这一次终于实现了中国地图的完整,但是这幅图似乎缺少的神韵呀,恭喜你,你说的很对,这幅图显示的有点扁,丝毫显示不出审计意明天下之的感觉,所以下面就需要采用另外一个绘图神器ggplot2对其进行美化了。

ggplot2协助绘制中国地图

雄赳赳气昂昂的中国地图终于出现了,如果你进行到了这里是不是稍稍有点自豪感了呀,那就不要犹豫去加个鸡腿吧。然后我们接着进行下一步,加载和拼接中国地图的行政信息,这样在下面我们才能进一步与所需要分析的数据整合起来进行分析。

这样我们便把地图数据化了,从而接下来就可以使用我们准备好的数据进行分析了。

第二讲:绘制热地图

还记得小编送给你们的第一个礼物中的Excel数据吗,那个Excel表格中存放的中国各省(除去中国澳门)2015年人口普查时的数据,当然你自己也可以创建你自己的数据集,比如各省的GDP,各省的面积、各省的学生人数等,但是一定要确保你创建的数据表中的NAME一列的数据要和shape文件中的NAME相同,所以在创建自己的数据表之前,不放运行一下如下命令以确保各省的称呼。

这里当然是用小编自己的人口数据了,所以在使用之前小编首先要将其导入进来(注意到一点就是小编的数据表格式是CSV的,并不是传统的xlsx,这是因为在R语言中操作CSV文件必xlsx文件容易太多了),并将其与前面的行政数据进行连接。

现在数据已经正确地连接在了一起,下面就要开始正式地作图了(有没有很期待,漆面铺垫了那么久,现在终于要进入高潮了)。

中国人口分布热地图

至此小编完成了对中国人口分布热地图的绘制,但是可以看出这个热地图中存在一些多余的元素,并且地图中缺少了对于各省的标注,这可能对不熟悉中国地图的人相对不便,因此,我们下面进一步美化热地图。

第三讲:热地图的美化

上面所绘制的热地图中存在两方面的缺陷:其一,地图中的经纬度曲线、坐标轴是不需要的,同时色彩有点暗淡需要重新调色;第二,地图上缺少对于各省的标注。下面,以此对此二问题进行解决。我们首先调整地图的配色以及删除地图中的经纬度线条与坐标轴,这里小编采用红色来对地图进行配色。

美化后的热地图1

有没有比原来的配色以及效果好很多,如果你否认的话当作我没说!下面,我们继续讲各省市加以标准,因为有些省名比较长,这会严重地影响美观,所以这里小编以各省的首府来对各省进行标注(虽然这种做法相对于直接标准省名稍显繁琐,但是没办法,小编就是一个特别喜欢美观的人,所以即使费点时间也是可以承受的)。之所以这种标注首府的方法会稍显繁琐,是因为需要找出各首府的地理坐标从而进行配对,为了便利你们的实践,这里小编将各省首府的地理坐标以及首府名整理在了Excel文件中了,需要的朋友请下载各省首府。下面首先将数据集导入,然后进行地图的二次美化吧。

热地图美化2

虽然仍存在字体的折叠问题,小编目前有两种想法对其进行进一步处理:其一,所有省份用简称;其二,调整标准的坐标点选取。这个各位可以自己进行尝试,本文就不再做进一步地绘制了。终于,我们完成了中国人口分布的热地图绘制,下面的时间留给你们,请时刻准备实践。

后记

本文写到这里就告一段落了,本文介绍了怎么使用maptools以及ggplot2去绘制中国人口分布的热地图,通过介绍,了解了R语言中绘图系统以及ggplot2的神辅助。对于ggplot2的介绍,后续的文章中,笔者会做进一步地系列介绍,这里就不再过分赞誉了。当然,你们完全可以使用自己的数据进行热地图的展现,就是我在前面所说的,最后一样宝物才是最重要的,当然这件宝物也是笔者无法带给你的。好了,本期文章就写到这里吧,下一期文章笔者准备接着讲述一下python+pandas库怎么去进一步实现excel中的相关功能,敬请期待!

PS:如果要下载本文的相关素材请在小编的个人博客中实时下载。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180505G02Q8A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券