Eğer kadar gelmişti, bazı iyi bir etiket Bulut mantığı ne? gibi fontsize = faktörü * percentageOfOccurance ....
Bir asgari boyutunu ayarlamak gerekir, bu yüzden olacak belki fontsize = minsize + factor * percentage
.
Sen boyutlarda sınırlandırmayı isteyebilirsiniz; belki yüzde sqrt veya kaydını almak, ama bu dağılımına bağlıdır.
Başka bir teknik için, üzerinde poeticcode bu blog yazısı bir göz Tag Clouds Algorithms:
Sonraki, lineer interpolasyon, nasıl yazı tipi boyut / renk yoğunluğu için min ve max sınırları belirlerim? Ben Amazon.com örneğin,% 80 ve% 280 arasında font boyutları bulunuyor değişen olduğunu fark. Yani, bulut içinde en düşük etiket% 80 yazı tipi boyutu ve yüksek etiket% 280 olsun istiyorum. Ben, aşağıdaki formül ile gitmeye karar verdik
150 * (1,0 + (1.5 * m-maxm / 2) / maxm)
Bu güzel% 75 MAXM bir potansiyel 0'dan metrik değişiklikleri gibi% 300 bir yazı tipi boyutunu verir.
(Bu ölçü olacak gibi yüksek sayısı ile element) her eleman için durum oluşmasına kontrol edin ve "maksimum" takip ediyorum.
Sonraki (% 100) maksimum elemanına göre her element için ortaya çıkma yüzdesini hesaplamak. Örneğin:
foreach ($elements as $element) {
$percentage = floor(($element['count'] / $maximum) * 100);
}
Sonraki 20/40/60/80/100 yüzde değerler için CSS stillerini oluşturmak ve yüzdesine göre doğru CSS stilini uygulayın.
Yoksa yazı tipi boyutunu hesaplamak önerdi olabilir gibi.
Öncelikle max almak. ve yayılmasını dk ve hesaplamak. ($ Max - $ dakika). / $ Spread - temelde ($ min $ max) - Sizin font-size arttırma "adım" olacaktır.
Şimdi buna göre font-boyutları hesaplayabilirsiniz:
$min_size + ($element['occurrence'] - $smallest_array_value) * $step
Lütfen sonucu tur unutmayın.
Böyle hesaplama etiket bulutu yaptık:
$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)));
}
Bu ihtiyaca bağlı olarak font boyutları yuvarlak sağlar.
Yazı boyutu $ minFSad $ maxFS font boyutu aralığını aşması asla.