ما هي الصيغة لحساب حجم الخط للعلامات في tagcloud؟
سؤال
لدي سحابة علامة وأحتاج إلى معرفة كيف يمكنني تغيير حجم الخط لمعظم العلامات المستخدمة.
أحتاج إلى ضبط حجم الأسفل وحجم أقصى حجم.
المحلول
يمكنك استخدام تقييم خطي أو لوغاريتمي لعدد العناصر المرتبطة بعلامة معينة بالنسبة إلى أكبر علامة ، وضربها بالفرق بين أحجام الخطوط الدنيا والحد الأقصى ، ثم إضافتها إلى الحد الأدنى لحجم الخط. على سبيل المثال ، قد تكون الرياضيات في الرمز الكاذب:
let min = 12, max = 24
for each tag
font = (items / items in biggest tag) * (max - min) + min
نصائح أخرى
لجعل إجابة @Delan أكثر وضوحًا ، قمت بإنشاء بعض الأمثلة باللغات التي أعرفها.
مثال في 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;
}
مثال في 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;
}
محاولة:
<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>
ثم
i2.emph();
خطرت لي هذه:
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.
إخلاء المسئولية: أنا لست جيدًا في الرياضيات.
لا تنتمي إلى StackOverflow