layout - 词云库 - 词悦




实现像Wordle这样的词云的算法 (8)

Lion和Lamb是一款开放源代码的iOS应用程序,它使用圣经选定书中最常用的词语创建词云。

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

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

上下文

我的问题

  • 是否有可用的算法来执行Wordle的功能?
  • 如果不是,那么有些替代品会产生类似的产出?

为什么我问

  • 只是好奇
  • 想学习


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

它是用SWT和JFace实现的,我试图将它集成到JFace的MVC模型中,以便您可以设置内容和标签提供程序来修改云的布局并将其添加到其他Eclipse插件或RCP应用。 您还可以修改字符串初始位置的计算方式,以便将其用于集群可视化或其他操作并不困难。 它在某些方面仍然记录不完善和有限(我几小时前完成了最初的上载,所以它可能仍然有点bug),但是如果您有兴趣,请点击以下链接:

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

干杯,斯蒂芬


我在这里有一个标签云发生器,我称之为Disorganizer :)

来源TagCloudService剃刀标记控件以及用于测试目的WinForm ,您可以将它们放在您的博客,个人资料等中,并附带一些小东西。 它大量使用C#4.0和System.Drawing命名空间。

我创建它是因为使用其他云生成器时,您无法单击标签进行导航,也无法创建悬停动画,以显示它们是可点击的。 由于在HTML中显示悬停动画对我来说是必要的(我使用重叠的绝对定位的<a>标签来做这件事),我还没有开发任何角度的文字显示 - 它们是垂直或水平的。

警告:上述链接可能会在几个月内失效,我计划慢慢将其从周围的项目中解开放到单独的项目中。

您可以在此示例博客文章中看到一个工作演示,但它不完整,并且位于不完整的站点中。 如果有人愿意贡献,请与我联系,我会尽快将它分离出来。


我已经实现了一种由Jonathan Feinberg用python描述的算法来创建标签云。 它远离wordle.net的美丽云彩,但它给你一个想法如何完成。

你可以在here找到项目。


我是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

而已。 最困难的部分是有效地进行交叉测试,为此我使用了最后打击缓存,层次边界框和四叉树空间索引(所有这些都是您可以通过一些勤勉搜索功能进一步了解的内容)。

编辑:正如Reto Aebersold指出的那样,现在有一本书可以免费获得,它涵盖了这个领域: 美丽的可视化,第3章:Wordle