【发布时间】:2010-03-04 10:46:24
【问题描述】:
您想出了哪些好的标签云逻辑?比如 fontsize = factor * percentOfOccurance ....
【问题讨论】:
您想出了哪些好的标签云逻辑?比如 fontsize = factor * percentOfOccurance ....
【问题讨论】:
您需要设置一个最小尺寸,所以可能是fontsize = minsize + factor * percentage。
您可能希望限制尺寸范围;也许取 sqrt 或百分比的对数,但这取决于您的分布。
对于另一种技术,请查看来自 poeticcode 的 Tag Clouds Algorithms 上的这篇博文:
接下来,在线性插值中,我们如何设置字体大小/颜色强度的最小和最大边界?例如,我注意到 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 样式。
或者你可以按照你的建议计算字体大小。
首先得到你的最大值。和 min 并计算点差。 (最大 - 最小)。您的字体大小增量将是“步骤” - 基本上是 ($max - $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 的字体大小范围。
【讨论】: