R语言实现voronoi treemap可视化

今天带来一篇承诺虾神的R语言可视化博客。关于voronoi treemap的可视化。

image

1 任务布置过程

感谢虾神,刀爷和魄爷实名出镜。

image

事实上这是刀爷看到澎湃美数课发的一篇推送文章其中一张图产生的疑问,感兴趣的可以点击原文

image

刀爷问的是如何实现上图的可视化,这就是任务布置的由来。

2 voronoi treemap简介

事实上这个可视化方式我曾经在我博客的资源整理系列介绍过,分别是该系列的第二十篇和第二十一篇,因此我很迅速找到了可以实现的开源代码库,链接在下面。

R package: voronoiTreemap

d3-voronoi-treemap

这个可视化方式英文为voronoi treemap。事实上是voronoi图与矩形树图两种可视化方式的结合。GIS的同学比较熟悉voronoi图,这个图就是泰森多边形。矩形树图即为下图的形式,可以说是一种复合可视化。

image

3 voronoi treemap的R语言可视化实现

我博客里介绍的实现方式有两种,但是这两种方式事实上都是基于d3这个javascript可视化大杀器做的。一个直接用javascript编程实现,另一个则是有人封装成了R包可以直接调用。由于我比较熟悉R语言,所以这里就以R语言实现可视化进行介绍。当然除此之外github上也有不少其他方式实现的,感兴趣的同学可以直接在github上搜索voronoi treemap。

所有R语言可视化的第一步,装包。

如果不想用最新版,可以直接在cran上装,使用如下的命令。

install.packages('voronoitreemap')

如果想用最新版,则需要使用devtools安装。

library('devtools')
install_github('uRosConf/voronoiTreemap')

接下来第二步,跑hello world。这个R包提供了两个样例数据,一个是ExampleGDP,另一个是canada。然后这个R包开发是为了开发R语言的Shiny应用做准备。Shiny是R语言中的web开发包,可以通过R语言实现一个web应用。这因此这个包内置了一个简单的Shiny app。所以首先先用这个来跑hello world。

vt_app()

当然执行如上的命令以后,浏览器会自动打开页面。

image

接下来只要在下拉框里选择对应的下拉框选项,即可显示可视化结果。

image

可以在本地浏览器简单进行交互了。当然这是简单的hello world探索,下一步我们讨论如何使用自己的数据来实现可视化。首先来查看数据结构以及相关函数。这里的数据结构以ExampleGDP为例。

image

这个包的主要函数包括以下几个。

vt_input_from_df: easy data input as a data frame
vt_export_json: export to json
vt_d3: create an htmlwidget
vt_app: start a shiny to create a Voronoi treemap

第一个函数是将数据框转换作为Voronoitreemap的输入,第二个函数是将输入函数输出为json文件,也就是d3库可以读取与可视化的数据。第三个函数是创建html的widget。第四个函数就是创建一个shiny app。这个包对输入的数据框有具体的要求,必须是特定格式的数据框(也就是与ExampleGDP的数据组织必须完全一样)。满足以下要求:

  • h1只有一个类别的总数据;
  • color是16进制的字符串;
  • code是h3对应的简写;
  • 所有数据的weight加起来等于100;
  • 数据框变量名与样例数据一致;
  • 除了weight以外的五列数据必须都是字符型。

我们以中国大陆区域的疫情数据做测试。h1就是China,h2为东中西部省份,h3为大陆地区31个省级行政区,weight为确诊病例数据的全国占比。这里以约翰霍普金斯大学的数据做示例进行处理。

首先是读取约翰霍普金斯大学的相关数据,可以直接读取github上的csv文件。然后提取出大陆地区31个省级行政区,然后做数据类型转换等前期处理,最后得到一个这样子的数据框。

image

最后将数据转换为json并可视化即可。

covid19cnjson <- vt_export_json(vt_input_from_df(covid19vtmp))
vt_d3(covid19cnjson)
image

由于湖北省数据较多,其他省份数据不够显著。单纯按照东中西的分类不是很准确,这里选择排除疫情暴发源地省份的湖北省再进行可视化,结果如图。

image

可以发现东部和中部省份相比于西部有更多的确诊病例。这个结果也比较好解释,中部与武汉的联系较为紧密,主要是空间距离上相近。而东部则是中国经济发达区域,可以描述为经济距离近。

这部分的代码,这里就放一个截图,如果想要代码文件的,可以与我邮件联系。或者关注我的github,我后续会将代码放到上面。

image
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容

  • R语言包的安装 参考文章 在R中大概有几种包的安装方式。 install.packages()常规包的安装 括号里...
    天涯清水阅读 12,758评论 0 21
  • 作品概述 这个作品刚刚获得“中国电科杯”城市数据创新大赛的城市交通专项奖,现在作为案例分享出来供同行交流讨论。虚的...
    真依然很拉风阅读 8,541评论 2 19
  • 在学习R的时候,R的包众多,很多时候对于初学者会造成很大的困扰就是不知道用什么样的包比较合适。我会在不断使用...
    果果哥哥BBQ阅读 15,860评论 0 62
  • 1.数据导入 以下R包主要用于数据导入和保存数据: feather:一种快速,轻量级的文件格式;在R和python...
    雨一流阅读 1,261评论 0 9
  • 我们看重别人对自己的理解 稍微与自己预想的有所偏差 理所当然觉得自己没有能够被理解 记得以前看过的话 说我们刚开始...
    刺客与月光阅读 200评论 2 2