あなたが思いついたいくつかの良いタグクラウドロジックは何ですか?fontsize = factor*percentofOccuranceのように...。
4 に答える
最小サイズを設定する必要があるので、多分fontsize = minsize + factor * percentage
。
サイズの範囲を制限することをお勧めします。おそらく平方根またはパーセンテージのログを取りますが、これは分布によって異なります。
別の手法については、タグクラウドアルゴリズムのpoeticcodeからのこのブログ投稿をご覧ください。
次に、線形補間で、フォントサイズ/色の強度の最小境界と最大境界をどのように設定しますか?たとえば、Amazon.comのフォントサイズは80%から280%の範囲にあります。したがって、クラウド内の最小のタグは80%のフォントサイズを取得し、最大のタグは280%を取得します。私は次の式で行くことにしました
150 *(1.0 +(1.5 * m-maxm / 2)/ maxm)
これにより、メトリックが潜在的な0からmaxmに変化するときに、フォントサイズが75%から300%になります。
すべての要素の出現をチェックし、「最大」(これが測定値になるため、カウントが最も高い要素)を追跡します。
次に、最大値(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
結果を丸めることを忘れないでください。
クラウド実装の最小値と最大値にタグを付けて、Imを少し混乱させて拡散する2番目の部分を書くことができます。
私はタグクラウドを次のように計算しました:
$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のフォントサイズ範囲を超えることはありません。