如何使用标签云或标签云逻辑的最佳实践?

4

你有哪些好的标签云逻辑?例如fontsize = factor * percentageOfOccurance ....

4个回答

5
您需要设置一个最小大小,例如fontsize = minsize + factor * percentage
您可能希望限制大小的范围;也许可以对百分比取平方根或对数,但这取决于您的分布。
对于另一种技术,请查看poeticcode关于标签云算法的博客文章:
“接下来,在线性插值中,我们如何设置字体大小/颜色强度的最小和最大边界?我注意到例如Amazon.com将其字体大小范围设置在80%和280%之间。因此,云中最低的标记将获得80%的字体大小,而最高的标记将获得280%。我决定采用以下公式”

150*(1.0+(1.5*m-maxm/2)/maxm)

“这将在度量从潜在的0变为maxm时很好地给出75%至300%的字体大小。”

2

我会检查每个元素的出现次数,并跟踪“最大值”(即具有最高计数的元素,这将是您的度量标准)。

接下来,计算每个元素相对于具有最大值的元素(即100%)的出现百分比。例如:

foreach ($elements as $element) {
    $percentage = floor(($element['count'] / $maximum) * 100);
}  

接下来创建20/40/60/80/100百分比值的CSS样式,并根据百分比应用正确的CSS样式。

或者,如您所建议的那样,可以计算字体大小。

首先获取您的最大值和最小值并计算差距。($max - $min)。您的字体大小增量将是“步长”,基本上是($max - $min) / $spread。

现在,您可以相应地计算您的字体大小:

$min_size + ($element['occurrence'] - $smallest_array_value) * $step  

不要忘记四舍五入你的结果。

0
我已经像这样计算标签云:
$v - incoming value,
$minV - minimal value from dataset,
$maxV - maximal value from dataset,
$minFS - minimum font size,
$maxFS - maximum font size,

function roundFontSize($v, $minV, $maxV, $minFS, $maxFS) {
    return $minFS + floor($v / (($maxV - $minV) / ($maxFS - $minFS)));
}

这将允许您根据需要调整字体大小。

字体大小将永远不会超过$minFS和$maxFS的字体大小范围。


0

你能给我写一下标签云实现的第二部分,包括最小值、最大值以及展开吗?我有点困惑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接