How do I calculate the size of the tag source in a tag cloud?

Asked

Viewed 265 times

4

I have a cloud of tags and want to change the font size of each tag as you use them.

I need to have a minimum size and a maximum size.

What would be the formula to calculate tag size?

1 answer

6


I created some examples to clarify the delan’s response.

Basically the formula is:

(tagAtual.Usos / maiorNumeroDeUsos) * (fonteMaxima - fonteMinima) + fonteMinima

Example in 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; // Deve ser computado
var min = 0;   // Deve ser computado

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

Exit:

c#             font-size: 20
.net           font-size: 17.5
typescript     font-size: 15
lua            font-size: 15
javascript     font-size: 12.5
jquery         font-size: 10
c++            font-size: 10

Example in 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;
}

Exit:

c#             font-size: 20
.net           font-size: 17.5
typescript     font-size: 15
lua            font-size: 15
javascript     font-size: 12.5
jquery         font-size: 10
c++            font-size: 10

Browser other questions tagged

You are not signed in. Login or sign up in order to post.