标签云或标签云逻辑的最佳实践?

发布于 2024-08-24 13:52:52 字数 1435 浏览 4 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

别理我 2024-08-31 13:52:52

您需要设置最小尺寸,因此可能是fontsize = minsize + Factor * Percent

您可能想限制尺寸范围;也许采用百分比的平方根或对数,但这取决于您的分布。

对于另一种技术,请查看 Poeticcode 在 标签云上发表的博客文章算法:

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

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

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

You'll need to set a minimum size, so maybe fontsize = minsize + factor * percentage.

You may want to limit the range of sizes; perhaps take the sqrt or log of percentage, but this depends on your distribution.

For another technique, have a look at this blog post from poeticcode on Tag Clouds Algorithms:

Next, in the linear interpolation, how do we set the min and max boundaries for the font size/color intensity? I notice that Amazon.com for example, is ranging it’s font sizes between 80% and 280%. So, the lowest tag in the cloud would get a font size of 80% and the highest tag 280%. I have decided to go with the following formula

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

This nicely gives a font size from 75% to 300% as the metric changes from a potential 0 to maxm.

ぇ气 2024-08-31 13:52:52

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

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

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

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

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

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

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

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

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

I'd check the occurance for every element and keep track of the "maximum" (the element with the highest count as this will be your measure).

Next calculate the percentage of occurance for each element, compared to the element with the maximum (which is 100%). For instance:

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

Next create CSS styles for 20 / 40 / 60 / 80 / 100 percentage values and apply the correct CSS style according to the percentage.

Or you could as you suggested calculate the font size.

First get your max. and min and calculate the spread. ($max - $min). Your font-size increment would be the "step" - which is basically ($max - $min) / $spread.

Now you can calculate your font-sizes accordingly:

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

Don't forget to round of your result.

再可℃爱ぅ一点好了 2024-08-31 13:52:52

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

Could write the second part to you tag cloud implementation min and max and spread Im a bit confused.

找回味觉 2024-08-31 13:52:52

我已经进行了这样的标签云计算:

$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 的字体大小范围。

I've made tag cloud calculating like this:

$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)));
}

This allow you to round font sizes depending of your need.

Font size will never exceed font size range of $minFSad $maxFS.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文