4

你想出了什么好的标签云逻辑?像 fontsize = factor * percentOfOccurance ....

4

4 回答 4

5

你需要设置一个最小尺寸,所以也许fontsize = minsize + factor * percentage.

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

对于另一种技术,请查看关于Tag Clouds Algorithms的 poeticcode 的这篇博文:

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

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

当度量标准从潜在的 0 变为 maxm 时,这很好地给出了从 75% 到 300% 的字体大小。

于 2010-03-04T10:51:23.250 回答
2

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

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

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

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

或者您可以按照您的建议计算字体大小。

首先得到你的最大值。和 min 并计算点差。(最大 - 最小)。您的字体大小增量将是“步骤” - 基本上是 ($max - $min) / $spread。

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

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

不要忘记对结果进行四舍五入。

于 2010-03-04T11:03:03.000 回答
0

可以将第二部分写给您标记云实现最小和最大并传播我有点困惑。

于 2010-07-12T08:17:20.013 回答
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 的字体大小范围。

于 2013-08-09T01:46:40.537 回答