很久没有作图了,主要是一时找不到应该练手的案例。
然后昨天逛网易数独栏目的数据新闻,看到一幅还不错的案例,对于我来说值得一试,然后就手痒给照葫芦画瓢弄出来了。(主要是其中涉及到的细节处理很麻烦)
当然过程是花了些时间的,主要是需要慢慢打磨其中的细节,需要利用很多技术来处理图形版面的交接位置。
令我感触最深的是,想要用ggplot2随心所欲的画图,ggplot2掌握的再熟练,也只是勉强过的了技术关,而图表背后的思维和结构更考验人,更具有挑战性。
好在我学习R语言之前,就已经利用Excel临摹了大量的高难度信息图,这一点可视化素养的积累,再结合对ggplot2勤加练习获得的图感,分分钟做出一副自己喜欢的作品,已经不在话下了。
数据准备:
以下是该案例涉及到的扩展包:
我把该案例切割成了两部分来做:
(实际上如果放在一个图里做也是可以实现的,无非是多写一些代码罢了,但是涉及到颜色标度重复的问题,一时半会儿找不到解决方案,为了更加逼真的还原案例效果,我决定分开来做)。
- 原图中的下半部分(条形图)(以下简称模块1)
- 上半部分(堆积柱形图+连接带)(以下简称模块2)
导入数据源:
|
|
tea_bump是上半部分(模块2)中堆积柱形图的数据源,我没有使用传统的堆积柱形图去做,而是使用了矩形几何对象,所以数据源中需要指定X轴起始点,Y轴起始点。
以下是下半部分柱形图的数据源,同样我也没有使用普通的柱形图几何对象去做,而是使用了范围线图(geom_linerange),这样可以节省调整步骤,但须额外设置线的起始点。
底部柱形图对象:
(因为需要拼图,所以图形对象要临时存储)
以下数据是构造模块2辅助数据:
(上半部分堆积柱形图的下侧连接带数据)的辅助数据,我打算使用多边形几何对象了来模拟那些参差交错的连接带。这就意味着我要找到每一条带子,即四边形的四个拐点坐标,并按顺序排列。)
如果你看的不是很懂,实属正常,这种笨拙的想法,我也不知道是从哪里学来的。
|
|
|
|
所以说上半部分的堆积柱形图(附加连接带)其实是用了两份不同的数据源模拟出来的。
模块2的可视化代码:
(也需临时存储)
图形合并最终效果:
有了上下两部分的对象,剩下的就好办了,无非就是拼接起来嘛,但是拼接的过程相当考验人的耐性和毅力,不适合浮躁型的人来做。
|
|
为了与原图对比,我使用PS修饰了一些细节:
做完回头想想,做这个图我也是真够无聊的,大概要耗费半天的时间去调试,不过调试的过程能学到的东西倒是很有趣,最近看了不起的匠人,感觉多少有些被感染到了,这算不算是强迫症~_~
联系方式:
wechat:ljty1991
Mail:578708965@qq.com
个人公众号:数据小魔方(datamofang)
qq交流群:[魔方学院]298236508
个人简介:
杜雨
财经专业研究僧;
伪数据可视化达人;
文科背景的编程小白;
喜欢研究商务图表与地理信息数据可视化,爱倒腾PowerBI、SAP DashBoard、Tableau、R ggplot2、Think-cell chart等诸如此类的数据可视化软件,创建并运营微信公众号“数据小魔方”。
Mail:578708965@qq.com
备注信息:
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。