你提出了什么样的好标签云逻辑?比如font size = factor * Occurance的百分比......
答案 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的字体大小范围。