2010-03-04 50 views

回答

5

你需要設置一個最小尺寸,所以也許fontsize = minsize + factor * percentage

您可能想要限制尺寸範圍;也許採取sqrt或日誌的百分比,但這取決於你的分佈。

對於另一種技術,看看從poeticcode這個博客帖子上Tag Clouds Algorithms

接下來,在直線插補,我們怎麼設置字體大小/顏色強度最小和最大的界限?例如,我注意到Amazon.com的字體大小在80%到280%之間。因此,雲中最低的標籤將獲得80%的字體大小,最高的標籤達到280%。我已決定去與下式

150 *(1.0 +(1.5 * M-MAXM/2)/ MAXM)

這很好地給出了一個字體尺寸從75%至300%爲指標的變化從0到maxm。

2

我會檢查每個元素的發生並跟蹤「最大值」(具有最高計數的元素,因爲這將是您的度量)。

接下來計算每個元素出現的百分比,與具有最大值(100%)的元素進行比較。例如:

foreach ($elements as $element) { 
    $percentage = floor(($element['count']/$maximum) * 100); 
} 

接下來爲20/40/60/80/100百分比值創建CSS樣式,並根據百分比應用正確的CSS樣式。

或者你可以按你的建議計算字體大小。

首先得到您的最大。和分鐘並計算點差。 ($ max - $ min)。你的字體大小增量將是「步」 - 這基本上是($ max - $ min)/ $ spread。現在

可以相應地計算出你的字體大小:

$min_size + ($element['occurrence'] - $smallest_array_value) * $step 

不要忘記圓你的結果。

0

可以寫第二部分給你標籤雲實現最小和最大並傳播我有點困惑。

0

我做了標籤雲計算是這樣的:

$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的字體大小範圍。