أفضل الممارسات مع TagClouds أو TagCloud Logic؟ [مغلق
سؤال
ما هي بعض المنطق السحابي الجيد الذي توصلت إليه؟ مثل fontsize = عامل * النسبة المئوية لتأمين ....
المحلول
ستحتاج إلى ضبط الحد الأدنى من الحجم ، لذلك ربما fontsize = minsize + factor * percentage
.
قد ترغب في الحد من نطاق الأحجام ؛ ربما خذ SQRT أو سجل النسبة المئوية ، ولكن هذا يعتمد على توزيعك.
للحصول على تقنية أخرى ، ألقِ نظرة على منشور المدونة هذا من PoeticCode On خوارزميات السحب:
بعد ذلك ، في الاستيفاء الخطي ، كيف يمكننا تعيين حدود MIN و MAX لحجم الخط/شدة اللون؟ لاحظت أن Amazon.com على سبيل المثال ، تتراوح بين أحجام الخطوط بين 80 ٪ و 280 ٪. لذلك ، فإن أدنى علامة في السحابة ستحصل على حجم الخط 80 ٪ وأعلى علامة 280 ٪. لقد قررت الذهاب مع الصيغة التالية
150*(1.0+ (1.5*m-maxm/2)/maxm)
هذا يعطي بحجم خط من 75 ٪ إلى 300 ٪ حيث يتغير المتري من 0 إلى 0 إلى الحد الأقصى.
نصائح أخرى
سأتحقق من حدوث كل عنصر وتتبع "الحد الأقصى" (العنصر الذي يحمل أعلى عدد لأن هذا سيكون مقياسك).
بعد ذلك ، احسب النسبة المئوية للحدوث لكل عنصر ، مقارنة بالعنصر بالحد الأقصى (وهو 100 ٪). على سبيل المثال:
foreach ($elements as $element) {
$percentage = floor(($element['count'] / $maximum) * 100);
}
بعد ذلك ، قم بإنشاء أنماط CSS لـ 20/40/00/00/80 / 100 قيم المئوية وتطبيق نمط CSS الصحيح وفقًا للنسبة المئوية.
أو يمكنك كما اقترحت حساب حجم الخط.
احصل أولاً على أقصى حد. و Min وحساب الانتشار. ($ max - $ min). ستكون الزيادة في حجم الخط هي "الخطوة" - والتي هي أساسًا ($ max - $ min) / $ spread.
الآن يمكنك حساب أحجام الخط وفقًا لذلك:
$min_size + ($element['occurrence'] - $smallest_array_value) * $step
لا تنس أن تدور حول النتيجة.
يمكن أن تكتب الجزء الثاني لك علامة تنفيذ السحابة Min و Max وينشر أنا مرتبك بعض الشيء.
لقد صنعت العلامة السحابة التي تحسب مثل هذا:
$v - incoming value,
$minV - minimal value from dataset,
$maxV - maximal value from dataset,
$minFS - minimum font size,
$maxFS - maximum font size,
function roundFontSize($v, $minV, $maxV, $minFS, $maxFS) {
return $minFS + floor($v / (($maxV - $minV) / ($maxFS - $minFS)));
}
هذا يسمح لك بدوران أحجام الخطوط اعتمادًا على حاجتك.
لن يتجاوز حجم الخط نطاق حجم الخط من $ minfsad $ maxfs.