语境
我的问题
我为什么要问
最佳答案
我是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/