语境

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

  • 我的问题
  • 是否有可用的算法执行Wordle的工作?
  • 如果否,那么产生类似输出的替代方案有哪些?

  • 我为什么要问
  • 只是好奇
  • 想学习
  • 最佳答案

    我是Wordle的创造者。 Wordle实际上是这样工作的:

    数数单词,丢弃无聊的单词,然后按数量降序排序。保留N个单词的前N个单词。为每个单词分配与其计数成比例的字体大小。使用Java2D API为每个单词生成Java2D Shape。

    每个单词“都希望”位于某个位置,例如“在垂直中心的某个随机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指出的那样,现在有一个免费的书章节,涵盖了相同的 Realm :Beautiful Visualization, Chapter 3: Wordle

    关于layout - 实现像Wordle这样的词云的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/342687/

    10-11 08:10