用户名:
密码:
首页
① 新闻管理
添加新闻
② 政策管理
添加政策
③ 法定规划
添加国空规划
③ 规划PDF附件
添加规划PDF附件
③ 规划图纸
添加规划图纸
④ 资料管理
添加资料
开通用户权限
⑥ AIGC课程学员
添加学员
MJ账号分组
2-AI图库管理
添加图库
3-AI新闻网站
添加信息
4-AI模型管理
添加模型
精准搜索
添加精准
知识库
添加知识库
规划问答
添加信息
小匠QQ微信群宣传
添加推荐
数据网址
添加网站
微信文章管理
课件系统
添加视频
一周热点整理
[ 常用工具 ]
格式化工具
段落合并工具
飞书
金数据
生成封面图
当前:新闻编辑 |
格式化工具
|
查看本文
标题
R而不凡︱R语言制作日本老龄化动画演示与绘制地图(两则)
分类
(编号:1116)
国土空间
城市更新
城市设计
生态环境
乡村振兴
区域发展
专项规划
资料下载
规划头条
政策规范
规划直播
其他
新闻
好物
观点
城市
政策
设计
社区
建筑
环境
产业
旅游
交通
读书
优选
榜单
空间规划
区域
文化
村镇
智慧
会议
公众参与
微文
摩天楼
地标
航拍
规划
链接
作者
时间
2016-04-20 00:00:06
政策
省
市
年
月
直播
主办:
协办:
时间:
会议室:
直播链接:
h1
/h1
h2
/h2
strong
/strong
一
°
览
°
众
°
山
°
小
SustainableCity & Transportation
编辑团队
原文/ Kyle Walker、Freakonometrics
翻译/ 辛梦阳 文献/ 王晓晖
校核/ 众山小
编辑/ 众山小 排版/ 古佳玉
译者萌像&导读:
R语言的应用一直是我们关注的焦点,今天我们就来介绍两种R语言的应用。则一是制作日本社会老龄化趋势的动画图,另外一则是介绍如何利用R语言绘制地图和热力图。相信大家会从中学到对海量数据的可视化、以及对地理信息展示的小技巧。另外感谢懂行的翻译志愿者对源代码的中文备注。
不多说,来看源代码喽!
请
看
正
文
1
则一、R语言制作日本老龄化动画演示
原文/ Kyle Walker 翻译/ 辛梦阳
美国人口普查局建立了多个数据库(http://www.census.gov/data/developers/data-sets.html) 以供开发者们通过Census API(http://www.census.gov/developers/)来调用数据。其中还有一个是国际数据库International Database (http://www.census.gov/data/developers/data-sets/international-database.html) ,该数据库提供人口统计历史数据(按年龄和性别分统计的人口)及其统计分析,并可预测未来情景直至2050年。Kyle Walker 为了应用这些数据库和API开发了R语言idbr包 (https://github.com/walkerke/idbr),让人们更容易通过R程序下载这些数据库,并创建类似图一的动画。该动画展示了日本自1990年以来的人口调查统计。人口调查局预测这种人口老龄化趋势只会随着时间推移而加剧。注意图中底部不断减少的婴儿数量,日本人口已经在2016年起开始减少。
图一、R语言制作的日本老龄化效果图
Kyle 使用ggplot(https://mran.microsoft.com/package/ggplot2) 命令的geom_bar来可视化这种人口金字塔,并使用ggthemes (https://mran.microsoft.com/package/ggthemes/) 包的Economist主题重新渲染。我们需要申请一个Census API (http://api.census.gov/data/key_signup.html) 的密钥来运行代码,不过这很简单,提供公司和电子邮件地址后分分钟就搞定。接下来安装ImageMagick (http://www.imagemagick.org/) 支持的animation(动画)包。那么我们看一下Kyle的源代码吧(https://gist.github.com/walkerke/f9665e15b74b393bd2d6#file-japan_pyramid-r):
图二、日本老龄化动画R语言源程序
更多关于Kyle的idbr包的内容,请点击如下GitHub的链接:
Github (walkerke): idbr, An R interface to the US Census Bureau International Data Base API (https://github.com/walkerke/idbr)
2
则二、R语言绘制世界地图
原文/ Freakonometrics 翻译/ 辛梦阳
图三、R语言绘制的世界地图
上个月,freakonmometrics在他的博客贴出了一系列关于北极的文章。这些文章中的地图都是用其卓越的ggplot2包绘制的,今天我们就来分享一些源代码。
首先,我们来获取一张世界地图,使用getMap命令从rworldmap包中读取(https://cran.r-project.org/web/packages/rworldmap/index.html)。较之map,我倾向于这个函数,因为它给我更精确的边界。当我在绘制欧盟地图时,会使用同样的方法(http://egallic.fr/european-map-using-r/)。
图四、绘制世界地图源代码
代码绘图如下:
图五、ggplot2 绘制的世界地图
ggplot2包中还有一个超赞的函数coord_map,可以让我们瞬间变换地图投影,指定方向同样很容易。
图六、变换地图投影的源程序
图七、变换后的效果
现在,我们想要高亮显示加拿大、俄罗斯、格陵兰等国在距离北极3000公里范围内的区域。这看起来没什么,但是在处理代表一个国家的多边形时,会显得很费力。
在给定圆心和半径的情况下,我们需要一个可以得到圆上各个点的坐标的函数。有趣的是,北极的维度是90,经度几乎为无穷。此外,在使用geosphere包中的函数destPoint时,((0,90))是无法识别的,为了解决这个问题,我做了一点小手脚,在原经纬度加上微小值。
图八、高亮地图
现在,我们可以使用gpclib包中的union函数创建我们选择国家的gpc.poly对象。这将使处理国家边界这种对象更为容易。看一下加拿大的坐标:
图九、处理国家边界
如你所见,有很多不同的组,该数据框中,有30个定义多边形来描述加拿大边界对每个多边形,我们获取与圆环相交的点坐标。接下来的代码展示了如何得到指定国家的gpc.poly对象。
图十、指定国家对象
在北极为圆心,半径为3000公里下,这里给出求得国家边界和圆环交点的坐标。
图十一、给出国家边界和圆环交点的坐标
接下来可以将这些函数应用到加拿大,俄国和格陵兰。我希望将这些圆最后画出,以免被多边形遮挡住,因此我将圆的数据框以”z”开头。
图十二、免被多边形遮挡
为了让ggplot能够只填充这三个国家的多边形,我们可以加入一个world.df2向量,让其他国家都为空值。
图十三、加入world.df2向量
终于可以绘图了!
图十四、绘图代码
图十五、加拿大、俄国、格陵兰距北极3000公里范围成图
现在,如果想生成动画gif,可以将以上代码在改变角度这个变量下运行。
图十六、生成动画GIF
图十七、动画GIF 效果
现在,让我们看看如何用网格化数据,为了演示这种方法,我们使用txt格式的NASA数据:GISS Surface Temperature Analysis GISS地表温度分析数据 (http://data.giss.nasa.gov/gistemp/maps/)
首先我们在R中加载进数据
temp <- read.table("nmaps.txt", skip=1, header = TRUE, na.strings="9999.0000")
想在调色板中设置等级间隔,并赋予不同颜色并不难:
图十八、赋予颜色
接下来,添加不规则的地表温度间隔:
temp$interval <- cut(temp$array.i.j, breaks = breaks)
最后一步是将之前的代码装进函数,同样是改变角度这个参数:
图十九、转载代码并改变角度
在绘图前,再次分析一下代码。如果想绘制贴块,使用geom_tile()函数。在temp数据中找到x和y的坐标。我们使用fill语句来根据地表温度填充贴块。最终,为了得到像NASA地图上那样的配色,我们需要通过scale_fill_manual手动定义颜色。
rotate_map(1)
ggplot2包中还有一个超赞的函数coord_map,可以让我们瞬间变换地图投影,指定方向同样很容易。
图二十、最终成图
同样,如果你想做出动画效果,虽简单,但需要更多时间。
图二十一、做成GIF效果
这样做出的动图将有28M那么大!
本文原文请参考:http://egallic.fr/maps-with-r/
购买2015上半年刊,请点击阅读原文......
「 欢迎投稿 」
我们作为专业志愿者团体,秉承理想,帮助中国可持续发展。并为之贡献:理念与传播、培训与教育、实践与孵化。欢迎您加入我们一起并肩前行!
2014-2016 ? 转载请注明:
源自公众号“一览众山小-可持续城市与交通”