当前位置 > CPDA数据分析师 > “数”业专攻 > 提升R语言的数据可视化效果的五个范例

提升R语言的数据可视化效果的五个范例

来源:数据分析师 CPDA | 时间:2015-07-28 | 作者:admin

当我开讲R语言课程时,开场白通常是:纽约时报的视觉部门或Facebook,现在正在使用这款软件来挖掘数据,给出壮美的可视化效果。不过,说完这些之后,我需要努力给出实际的案例,以展示R语言输出的结果如何变为令人震惊的、信息量巨大的图片。现在,这终于不再那么困难了。

去年,我与一位妙人设计师Oliver Uberti,一起写了一本书,其中有100多幅关于伦敦的地图和信息图。我们为这本《伦敦:信息之都》制作的绝大部分信息图,需要利用R语言,呈现某些形状或形式。R语言可用来做任何事,从简化数百万的GPS数据,到制作泡泡图或简单绘制大量直线。我们每三天就得做出一张图,以在截止期限前完成,如果复制粘贴R语言的代码毫无效率,或制作任何图片都没有灵活性,那么这本书不可能完成。如果你对利用R语言创作伟大图片的过程感兴趣,请注意下面展示的5组图片,包括利用R语言刚制作出的草图,到最后成型的作品

1

这张图片展示了英格兰南部通勤者起讫点流。在R语言中,我利用绝妙的ggplot2包中的geom_segment()命令,绘制起讫点重心间纤细透明的白色线条。我觉得,R语言制作出的图片在黑色背景下显得特别漂亮,不过,之后我们将其导入AdobeIllustrator,Oliver将一系列透明效果应用在线条上,使得线条在深蓝的背景下熠熠夺目(我们在整本书中使用了深蓝)。

2
这是我们制作的一张图片,展示了伦敦昼夜的人口分布,这里只展示晚上。为了制作这幅图,我复制了制作人口线图的代码,而Oliver努力手动清除了我过度绘制的红色线条的边缘(我在ggplot2中调试不出如何自动清除线条)。然后,在Illustrator中,转换了颜色,增加了标签。

3
这本书中我最爱的一张图片,显示了泰特美术馆中每位艺术家作品的数量。这里只展示了一小部分,而其全景尤为壮观,因为其中心突出了一幅特纳的绘画。这张图片以树形图的形式展示,矩形框的大小表示艺术家作品数量多少。可以很简单地在R语言的treemap包中使用treemap()功能来制作。Oliver费劲地将输出的图片打碎成小片,把矩形转换为图片相框,并将其挂在“墙上”。

4

这张地图展示了伦敦一天中骑行者的情况。在这个例子中,R语言输出图片后,无需做太多工作,只是增加了泰晤士河、一些标签,然后优化了印刷颜色。这张地图中描绘出了几十万条线段,这也是R语言绘制海量数据能力的极佳例证。

5
上图是至今为止书中最火的一张图片。该图利用了2011年的人口普查数据制作了不同婚姻状况的人口分布地图,并以水流图的形式展示出了绝对数量。利用ggplot2包制作出了地图和图片。我们坚持使用输出时地图的颜色,然后手动编辑水流图的颜色。水流图是利用ggplot2包中的geom_ribbon()功能制作的。

6
目前为止展示的所有图片都是从数据开始的,最少也有数千行数据。最后这张图片,我们展示一个小型数据的例子—获得蓝色牌匾的100位伦敦人。手动编辑每个人的数据,每个人的名字包含3个属性:他们活着的年龄、他们创作最重要作品的年龄、他们一生中生活在伦敦的时期。多亏ggplot2包,我才能利用下面的代码输出上面看上去粗糙的图片。Oliver拿过图片,手指弹了弹,然后在Illustrator变换图片的风格、增加标签。这里最关键的是,R语言里的几行代码,节省了一天手工绘制线条的时间。