所以我正在创建一个包含 X 数量标签的标签云。像这样的东西http://upload.wikimedia.org/wikipedia/commons/a/a7/Web_2.0_Map.svg 关键字使用得越频繁,它的字体就越大。对于我的标签云,我有 X 数量的标签,我需要按字体大小对其进行分组。我有一个名为 FacetBucket 的结构,其中包含标签及其频率。最常用的短语将具有最大的字体大小,而最不常用的术语将具有最小的字体大小。适度使用的术语都将具有最大和最小之间的字体大小。所以我的问题是我有 X 数量的标签和 Y 数量的字体大小,我应该寻找什么样的算法来解决我的问题?
问问题
721 次
2 回答
1
对于其他想要做类似事情的人来说,这里有一个有用的方程式。
We will use the following variables, namely:
a = the smallest count (or occurrence).
b = the count of the tag being computed.
c = the largest count.
w = the smallest font-size.
x = the font-size for the tag. It is the unknown.
y = the largest font-size.
Now let's substitute the given values to their respective variables. Assuming that we are solving for the "thanksgiving" font-size.
a = 88
b = 168
c = 211
w = 12
x = ?
y = 50
And here's the formula:
x = (b-a) (y-w)
----------- + w
(c-a)
Or to put it in one liner (using c-like syntax):
x = ( ((b-a) * (y-w)) / (c-a) ) + w
取自http://blog.16codes.com/2007/12/how-to-create-tag-cloud-with-formula.html
于 2013-09-13T18:55:56.723 回答
0
您需要决定您打算使用的有限字体大小集(这取决于您的 GUI 实现)。
然后,您将每个尺寸分配给标签频率范围。范围将取决于
X
和Y
值。
这将确定每个频率获得的字体大小,只要标签的数量超过可用的字体大小数量,就会以相同的大小显示接近的值频率。
实际需要的算法并不多。
于 2013-09-13T16:22:44.010 回答