使用tagclouds或tagcloud逻辑的最佳实践? [关闭
题
您想出的一些好的标签云逻辑是什么?像fontsize =因子 *百分比。
解决方案
您需要设置最小尺寸,所以也许 fontsize = minsize + factor * percentage
.
您可能需要限制尺寸的范围;也许以SQRT或百分比日志为准,但这取决于您的分布。
对于另一种技术,请查看PoeticCode的这篇博客文章 标签云算法:
接下来,在线性插值中,我们如何为字体大小/颜色强度设置最小和最大边界?我注意到例如,Amazon.com的字体尺寸在80%至280%之间。因此,云中最低的标签将获得80%的字体大小和最高标签280%。我决定使用以下公式
150*(1.0+(1.5*M-Maxm/2)/MAXM)
当度量从电位0变为MAXM时,这很好地提供了从75%到300%的字体尺寸。
其他提示
我将检查每个元素的发生,并跟踪“最大值”(最高数量的元素,因为这将是您的措施)。
接下来,与具有最大值的元素相比,计算每个元素的发生百分比(为100%)。例如:
foreach ($elements as $element) {
$percentage = floor(($element['count'] / $maximum) * 100);
}
接下来,为20 / 40/60 / 80 /100百分比值创建CSS样式,并根据百分比应用正确的CSS样式。
或者,您可以按建议计算字体大小。
首先获得最大。和最小并计算传播。 ($ max -$ min)。您的字体大小增量将是“步骤” - 基本上是($最大 - $ min) / $ spread。
现在,您可以相应地计算字体大小:
$min_size + ($element['occurrence'] - $smallest_array_value) * $step
不要忘记您的结果。
可以将第二部分写给您标记云实施最小并最大值,并有点困惑。
我已经制作了这样的标签云计算:
$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的字体尺寸范围。
不隶属于 StackOverflow