Quelle est la formule pour calculer la taille de la police pour les balises dans un cloude?
Question
J'ai un nuage de tags et je dois savoir comment je peux changer la taille de la police pour les tags les plus utilisés.
Je dois définir une taille min-police et une taille max-police.
La solution
Vous pouvez utiliser une évaluation linéaire ou logarithmique du nombre d'éléments associés à une certaine étiquette par rapport à la plus grande étiquette, il faut multiplier par la différence entre les tailles de police minimum et maximum, puis l'ajouter à la taille de police minimum. Par exemple, le calcul pourrait être en pseudo-code:
let min = 12, max = 24
for each tag
font = (items / items in biggest tag) * (max - min) + min
Autres conseils
Pour faire @ la réponse de Delan plus clair que j'ai créé quelques exemples dans les langues que je connais.
Exemple en Javascript
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;
}
Exemple en C #
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;
}
Essayez:
<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>
Ensuite
i2.emph();
Je suis venu avec ceci:
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
Ce qui m'a donné pesé les mots entre 1 et 100. Il fonctionne parfaitement pour moi znaci.net/arhiv.
DISCLAIMER:. Je ne suis pas bon en maths