我有一个标签云,我需要知道如何更改最常用标签的字体大小。
我需要设置最小字体大小和最大字体大小。
您可以对与某个标签相关联的项目数量(相对于最大标签)进行线性或对数评估,将其乘以最小和最大字体大小之间的差异,然后将其添加到最小字体大小。例如,伪代码中的数学可能是:
let min = 12, max = 24
for each tag
font = (items / items in biggest tag) * (max - min) + min
为了使@Delan 的答案更清楚,我用我熟悉的语言创建了一些示例。
var tags =
[
{ Name: "c#", Uses: 100 },
{ Name: ".net", Uses: 75 },
{ Name: "typescript", Uses: 50 },
{ Name: "lua", Uses: 50 },
{ Name: "javascript", Uses: 25 },
{ Name: "jquery", Uses: 1 },
{ Name: "c++", Uses: 0 },
];
var max = 100; // Should be computed
var min = 0; // Should be computed
var fontMin = 10;
var fontMax = 20;
for (var i in tags)
{
var tag = tags[i];
var size = tag.Uses == min ? fontMin
: (tag.Uses / max) * (fontMax - fontMin) + fontMin;
}
var tags = new List<Tag>
{
new Tag { Name = "c#", Uses = 100 },
new Tag { Name = ".net", Uses = 75 },
new Tag { Name = "typescript", Uses = 50 },
new Tag { Name = "lua", Uses = 50 },
new Tag { Name = "javascript", Uses = 25 },
new Tag { Name = "jquery", Uses = 5 },
new Tag { Name = "c++", Uses = 5 },
};
int max = tags.Max(o => o.Uses);
int min = tags.Min(o => o.Uses);
double fontMax = 20;
double fontMin = 10;
foreach (var tag in tags)
{
double size = tag.Uses == min ? fontMin
: (tag.Uses / (double)max) * (fontMax - fontMin) + fontMin;
}
Try:
<div data-i2="fontSize:[10,30]">
<span data-i2="rate:1">A</span>
<span data-i2="rate:4">B</span>
<span data-i2="rate:7">C</span>
<span data-i2="rate:12">G</span>
<span data-i2="rate:5">H</span>
</div>
Then
i2.emph();
在这里你可以检查它是如何在 WordPress 中完成的:
fontStep = (maxSize - minSize) / (maxCount - minCount);
fontSize = smallestFont + ( tagCount - minCount ) * fontStep;
我想出了这个:
max_word_count = 412 # should count from list
min_word_count = 44 # should count from list
difference = max_word_count - min_word_count
min_weight = 99 / difference * min_word_count
for each tag
weight = 99 / difference * this_word_count - min_weight + 1
这给了我 1 到 100 之间的加权词。它在znaci.net/arhiv对我来说非常有效。
免责声明:我不擅长数学。