您想出的一些好的标签云逻辑是什么?像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的字体尺寸范围。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top