Quelle est la formule pour calculer la taille de la police pour les balises dans un cloude?

StackOverflow https://stackoverflow.com/questions/3717314

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.

Était-ce utile?

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();

http://jsfiddle.net/EUaC5/1/

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top