使用tagclouds或tagCloud逻辑的最佳实践?

时间:2010-03-04 10:46:24

标签: php tags tag-cloud

你提出了什么样的好标签云逻辑?比如font size = factor * Occurance的百分比......

4 个答案:

答案 0 :(得分:5)

您需要设置最小尺寸,因此可能fontsize = minsize + factor * percentage

您可能希望限制尺寸范围;也许取sqrt或log百分比,但这取决于你的分布。

对于另一种技术,请查看Tag Clouds Algorithms上poeticcode的博客文章:

  

接下来,在线性插值中,我们如何设置字体大小/颜色强度的最小和最大边界?我注意到Amazon.com的字体大小介于80%和280%之间。因此,云中的最低标签将获得80%的字体大小和280%的最高标签。我决定采用以下公式

     

150 *(1.0 +(1.5 * M-MAXM / 2)/ MAXM)

     

当指标从潜在的0变为最大值时,这很好地给出了75%到300%的字体大小。

答案 1 :(得分: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  

不要忘记结果。

答案 2 :(得分:0)

可以写第二部分给你标记云实现min和max并且传播我有点困惑。

答案 3 :(得分: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)));
}

这允许您根据需要对字体大小进行舍入。

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

相关问题