在2015年初,我们在Uber内部开始创建了一支官方的数据可视化团队。其背后的理念是:为了Uber的数据集集合,我们通过制作视觉探索性数据分析工具来传递情报。每一天,Uber都要管理数以亿计的GPS位置。每一分钟,我们的平台都要处理数以百万计的电话接打操作。如果我们不使用技术手段来分析和解读这个信息,我们将会错过更好地理解我们业务的机会。
自成立以来,UberEngineering的数据可视化团队的人数已经从只有我自己和一个工程师的状况发展到一个完全的15人团队。数据可视化专家的技能跨度由电脑绘图到信息设计,也涵盖了创新技术和网络平台开发。我们团队专注的领域是从可视化分析到绘图,以及面向公众数据的可视化框架开发。
让我们看看每个方面都做一些什么样的工作:
可视化分析:Uber的数据可操作性
表格和置信区间可视化将功能添加到我们的A/B测试平台,Morpheus(一个完整功能的P2P文件分享应用程序)。
可视化分析论主要包括抽象数据的可视化。这是指在可视化工作中数据没有固有的空间结构。反对这种观点的观点是科学可视化,这种观点认为可视化描述的数据是来自物理世界(地图、三维结构等)。大部分可视化分析论都致力于涉及到报告、仪表板和图表和网络实时分析等领域的研究。我们公司团队将可视化层力量集中在大多数商业洞察应用程序和商业数据挖掘上。其他需要我们可视化工作技术支持的领域包括我们的A/B测试平台和我们内部的大规模机器学习平台。
当我们创建这些应用程序的时候,我们的团队坚持创建可重复使用的组件。我们最近公开了react-vis的源代码,一个React和 D3-powered可视化库,提供特定领域的语言JSX-based,来组成由视觉轴、图表类型和其他基本的视觉元素构成的图表。它使开发人员能够通过React- 和 JSX-friendly的数据集集合,以声明的方式塑造他们想使用的可视化。
我们正在为绘图付出类似的努力。
绘图:丰富探测数据
基于地图的信息是Uber最大的和最富有的财产之一。我们平台每天实时掌控着数十亿的GPS点构成的实时可视化绘图、in-browser和data-dense可视化等的非典型的挑战。
在给定半径的区域拖动光标,显示在实时的Uber接送点分布。
根据不同的客户的需求,我们开发的多个绘图应用程序。在Uber运作的400 +城市中,一类客户是管理者和城市运维团队。这些人需要当前供应和需求分布的及时信息。他们可能还需要访问汇总数据来更好地了解一个城市的市场营销活动。另一类客户是数据科学,它需要多维数据的富有探索性的接口(按产品、时间和地理)。我们为他们构建应用程序来分割信息,并从我们的数据中得到一些见解。
我们的技术员用一些我们开发和开源的元件库堆栈了这些应用程序。react-map-gl提供了一个在MapboxGL之上的React-friendlylayer,它是我们在Uber中广泛使用的MAPbox元件库。Deck.gl为创建WebGL-powered layers提供了一个接口,它可以被放在一个地图上,或者被独立用来创建抽象数据的可视化界面。
Deck.gl和 react-map-gl 提供WebGL接口来创建数据密集的绘图应用程序。
但,所有这些技术都可以用在创作方法上。数据可视化的一个重要部分是视觉叙事和数据艺术与插图。
面向公众:数据故事
有许多创造性的方式可以用来讲述Uber的数据可视化故事。我们可以围绕一个主题如安全、效率、交通、或Uber在公共交通网络的作用等创建视觉叙事。
我们最近建立了一个数据可视化,探讨uberpool如何能使城市交通更加高效。听过Travis Kalanick 的 TED 演之后讲,你都会看到我们制作的数据可视化显示了每条街道在有无uberpool状态下的交通情况,这证明POOL有能力通过减少交通让城市变得更智慧。
左:SF在没有uberpool的情况下经历的市中心交通拥堵。右:POOL用智慧的方式指导同样多的人顺利通行。
我们继续研究其他的视觉叙事。这方个领域的工作有一个关于搭配了数据艺术和插图的数据新闻的有趣组合,很具有挑战性。数据处理是一种挑战,就像我们为我们的内部视觉探索性数据分析产品所做的工作,但美学也起了重要作用,因为视觉刺激和人类的消化率往往比有效的信息设计技术更重要。
例如,我们开始与设计团队合作,为动画地图获得品牌视频,显示每辆车在Uber中一整天的行程,在Uber中的一整天的生活。其结果是一个WebGL应用程序运行服务器端渲染了每一帧,并将其编译为一个视频。应用程序负责从数据收集过程的一切(通过Hive)来构建带有离线渲染技术的视频。
一个3D的三维动画地图显示匿名Uber一整天的旅行
为了这方面的工作,我们还开发了一个专注于WebGL-based可视化的框架,称为luma.gl。它在被设计时充分考虑了现代技术:ES6,WebGL 2,和基于组件的平台。这使得luma.glNENG 和其他受欢迎的元件库能够互操作。