实现像Wordle一样的文字云的算法

nam*_*los 198 layout fonts typography tag-cloud wordle-game

上下文

  • 看看Wordle:http://www.wordle.net/
  • 它比我见过的任何其他文字云生成器都要好看
  • 注意:源代码不可用 - 请阅读常见问题解答:http://www.wordle.net/faq#code

我的问题

  • 是否有可用于Wordle的算法?
  • 如果不是,有哪些替代产生类似的输出?

我为什么这么问

  • 只是好奇
  • 想学习

Jon*_*erg 463

我是Wordle的创造者.这是Wordle实际工作的方式:

计算单词,扔掉无聊的单词,然后按计数排序,降序.保留前N个单词为N.为每个单词指定与其计数成比例的字体大小.使用Java2D API为每个单词生成Java2D形状.

每个单词"想要"在某个地方,例如"在垂直中心的某个随机x位置".按频率降序排列,对每个单词执行以下操作:

place the word where it wants to be
while it intersects any of the previously placed words
    move it one step along an ever-increasing spiral
Run Code Online (Sandbox Code Playgroud)

而已.该的部分是在做交叉点测试有效,为此,我用最后命中缓存,层次包围盒,四叉树空间索引(所有这些事情你可以了解一些勤奋使然).

编辑:正如Reto Aebersold指出的那样,现在有一本免费提供的书籍章节涵盖了同一领域:美丽的可视化,第3章:Wordle

  • 感谢您提供非常有用的信息.你先生,统治. (41认同)
  • SO的美丽......你正在询问问题的人,可能实际上回答了你的问题! (30认同)
  • "勤奋的谷歌搜索".喜欢它 :) (22认同)
  • 更多信息请访问:http://static.mrfeinberg.com/bv_ch03.pdf - 谢谢乔纳森. (6认同)

Ret*_*old 33

我已经实现了Jonathan Feinberg所描述的算法,使用python创建了一个标签云.它远离wordle.net的美丽云彩,但它让你知道如何做到这一点.

你可以在这里找到这个项目.


joh*_*cek 32

这是来自Jason Davies使用d3的非常好的javascript.你甚至可以使用webfonts.

演示:http: //www.jasondavies.com/wordcloud/

Github:https: //github.com/jasondavies/d3-cloud


小智 31

我创建了一个使用Jonathan在此建议的算法的Silverlight组件.我的博客上提供了源代码和示例项目:

http://whydoidoit.com

颜色词云

我的云可让您根据不同的权重对单词进行着色和调整大小,并支持单词选择(从坐标)和选定的单词突出显示.您可以根据需要使用该来源.

示例词云

  • 你的博客似乎是空的.链接死了吗? (2认同)

Dan*_*ier 14

我正在使用WordCram,一个用于制作文字云的​​Processing库.它受Wordle的影响非常大,并且通过与上面链接的相同的PDF aeby进行通知.它可以为您处理碰撞检测,让您专注于您希望如何布置,着色,旋转等.


Wav*_*vel 10

http://code.google.com/apis/visualization/documentation/gallery.html

查看单词云可视化.不像wordle.net那么华丽,但很容易添加到您的网站.


ssc*_*ieb 8

我正在寻找一个类似于wordle的可视化,它可以分配与其他数据相关的字符串的颜色,初始位置和大小,例如文本中的相关性 - 没有找到任何内容,但是由于我在这里找到的信息(特别是Jonathan的解释和aeby的链接),我终于可以实现' Cloudio ',它与wordle相比非常接近(至少我认为是这样......)并提供我正在寻找的功能.

它是用SWT和JFace实现的,我试图将它集成到JFace的MVC模型中,这样你就可以设置内容和标签提供者来修改云的布局并将其添加到其他Eclipse插件或RCP中应用.您还可以修改计算字符串初始位置的方式,这样就不难将其用于集群可视化.它仍然记录不清,并且在某些方面受到限制(几小时前我做了初始上传,所以它可能仍然有点儿错误),但如果你感兴趣,请点击链接:

这里是一些创建云的链接,以防您需要快速印象:https://github.com/sschwieb/Cloudio/wiki/Example-Clouds

干杯,斯蒂芬


Geo*_*dze 8

这里看到我像Word一样实现Wordle.它使用相同的螺旋算法和QuadTree数据结构.

http://sourcecodecloud.codeplex.com

要么

http://www.codeproject.com/Articles/224231/Word-Cloud-Tag-Cloud-Generator-Control-for-NET-Win


小智 5

Lion and Lamb 是一款开源 iOS 应用程序,可使用所选圣经书中最常用的词来创建词云。

它基于 Jonathan Feinberg 描述的算法。命中测试确实使用了四叉树,但边界框基于字形的边界矩形。我想将字形分解成许多较小的边界矩形,以便在字形的边界框中放置单词。

GitHub: https://github.com/PetahChristian/LionAndLamb

圣经启示录的词云