这个“美国 Reddit”图表是如何创建的?

机器算法验证 聚类 数据可视化
2022-03-16 19:23:26

下面是p的图表。Christian Rudder 的Dataclysm的 202 ,虽然它是由 James Dowdell 制作的。它说明了各种排名前 200 的 subreddit 之间的关系,这是reddit.com上用户可以提交链接、评论和投票的兴趣领域。这些类似于本网站上的标签。subreddit 区域的大小代表了它们的受欢迎程度。subreddit 按交叉评论分组,较深的色调代表留在该 subreddit 内且不向其他人发帖的人的百分比。

这只是一个标准的 Voronoi 分区,带有一些孤立的颜色,还是涉及更多的东西?

如何制作其中之一?

美国 Reddit

2个回答

首先,我是 James Dowdell,所以我比较有资格回答(创建了一个帐户来回答,如果有人担心可以确认身份)。

简单的答案确实是其他人所猜测的:这是一个http://en.wikipedia.org/wiki/Voronoi_diagram我们在第 194 页使用了相同的概念,其中 voronoi 站点是 craigslist.org 列出的纬度经度对。

不幸的是,这些知识本身实际上并不是很有用。使用 Craigslist 图表,可以很清楚地为网站使用哪些值。但是 Dataclysm 使用了什么魔术来在该图中分配 x/y 坐标?

这个问题的答案比大多数人预期的要复杂得多,我不能说我建议重做我们所做的事情。我敢打赌,这里的其他人可能会推荐一种或多或少获得相同结果并且更简单的方法。

事实是:

克里斯蒂安和我来来回回地为本章创建了 3 个多月的图表,我们永远无法完成工作。但是,一种方法的结果通常会反馈到另一种方法中。

  1. 不幸的是,最关键的事情涉及一种技术和一些图像资产,我无权以任何有意义的方式探索或分享,因为我们可能仍然会以某种方式使用它们。我要说的是,我们采用了一个复杂的http://en.wikipedia.org/wiki/Graph_theory#Graph,我们在 Reddit 数据的许可下编译,涉及用户 ID 和 subreddit,我们玩弄了这个图和各种衍生品它在http://gephi.github.io/里面(这些天我特别喜欢“OpenOrd”)。事实上,我们得到了一幅宏伟的图像——如果它已经出版,那将是这本书的亮点——但是虽然它在网站上工作得很好,但在一本书中打印效果不佳——没有足够的空间或分辨率。Christian 最初考虑将其设置为书中的折页,但对于 Crown 来说,这并不划算。

  2. 然而,在这一点上,我们有一个图像,它具有子reddit 的 x/y 坐标,并且它们至少在 x/y 空间中相对正确地排列。我们也很着急,因为发布截止日期快到了。我首先是一名程序员,其次是一名数据专家,所以为了适应书中页面的极其严格的边界和时钟上剩余的时间,我的直觉是在 Box2D 中编写一个程序,模拟页面的边界为墙壁,在里面放置一个非常缩小的图形版本,并模拟这些节点的增长(顺便说一下,对于 Box2D 来说这不是自然的,它期望刚体不会改变),直到一切都与墙壁和彼此齐平。节点的增长速度与它们所代表的 subreddit 的大小成正比,这意味着最终大小也将以同样的方式成正比。box2d程序运行时的截图

  3. 结果看起来一点也不好看,但它确实给了我一些非常有价值的东西:voronoi 站点。我获取了生成的 box2d 多边形的质心,将它们通过一个标准过程,这就是书中图表所使用的。我相信文本标签是在 Photoshop 中手动应用的。

顺便说一句,单元格着色与我们为形成 (A) 中的图表而开发的统计数据有关

它看起来更像是具有 Voronoi 多边形外观的词云问题。您需要使用词频来确定位置(高频意味着中心)。只要确定了单词的位置,绘制 Voronoi 多边形应该没什么大不了的。