Facebook实习生画出全球好友关系可视化地图

avatar 9397
joshua.cong
3820
15
Preview


36kr.com36kr.com工程部的一名实习生,他选取了Facebook社交图景数据中的1000万对好友关系样品,绘制了一张全球人际关系地图。

他把每对城市之间的权重作为函数,城市之间的欧式几何距离和城市间的好友数量作为变量。然后根据权重在关系对之间连线,好友关系最多的城市对之间的关系线放在其他城市连线的上方。颜色从黑到蓝到白,颜色和权重相关。

原始链接:facebook.com,自己翻墙看吧。

译文(来自某GoogleGroup):

数据可视化就像摄影术。只是你并不是从一个空白的画布上开始,而是由你来操作镜头从一个特定的角度来“看”数据。

当这个数据来自5亿人的社会化图时,你可以通过很多种镜头去看她。其中一个引起我好奇的是朋友联系与地理位置的关系。我很感兴趣看一看地理和政治的边界是如何影响朋友关系的。我需要一个可视图来展示不同城市之间的朋友联系。

我从我们的数据仓库 – Apache Hive(hive.apache.org) 中抽取了1000万对朋友的采样数据。我将用户按城市进行数据分组,并将两个城市之间含有的朋友对的数量加和。然后再给每个城市加上的经纬度的属性值。

基于这个基础,我用了一个开源的统计工具 – R (r-project.org)来做数据挖掘。我根据城市的经纬度画坐标点,画完后,已经能大致看到一个世界的轮廓。接着抹掉这些点,开始画点与点之间线(注:一条线代表两个城市之间有一个“朋友对”)。几分钟的渲染后,一个巨大的白团出现在图的中心。团的一些外边界大致上接近一些大陆的边界,但很明显的,仅仅这样画线,会由于数据太多而得不出有趣的结果。我想也许让线条变得半透明会更好,但我立刻意识到我的绘图环境不能处理足够的色度来达到我想要的效果。

于是我想了一个替代方法来模拟。我定义了每一对城市间的“权重值”,该值是另两个参数的函数(一个是城市间的欧几里得距离,另一个是两个城市所含“朋友对”的数目)。然后我根据“权重值”来画线,两个城市间“朋友对”的个数越多,该线条将越置于别的线条的上面。 我用了一个从黑到蓝到白的色盘来标识不同权重的线的颜色。我还将那些跨度超过半个地球的线做了一些处理,让他们尽量沿着图的边上走。

又经过几分钟的渲染,新的图终于出来了,我看到后大吃一惊。那个大白团变成了令人惊讶的一个世界图。不仅大陆架清晰可见,连一些国家的边界线都很清楚。这些真令人目瞪口呆,因为这些线条并不是用来描述海岸线、河流或是政治边界的,仅仅是真实的人际关系。每条线可能描述了一对远隔重洋的驴友,或者是分居两地的家庭成员,甚或是一对老校友!

最后,我按地球仪上两点的最短球面线将所有的线重画。得到了你们所看到的现在这张图!
当我把这张图拿给 Facebook 其他同事分享时,引起了很多人的共鸣!这不仅仅是一幅可爱的画,这是跨越海洋和国境的社交网络对人类所产生影响的一个重新肯定! ”
  • 2
15条回复