каков какой-то хороший тег Cloud, который вы придумали? как fontsize = factor * percentOfOccurance ….
Вам нужно будет установить минимальный размер, поэтому, возможно, fontsize = minsize + factor * percentage
.
Вы можете ограничить диапазон размеров; возможно, возьмите sqrt или log процента, но это зависит от вашего распределения.
Для другого метода, взгляните на это сообщение в блоге из poeticcode в Tag Clouds Алгоритмы :
Далее, в линейной интерполяции, как мы устанавливаем границы min и max для размера шрифта / интенсивности цвета? Я замечаю, что Amazon.com, например, определяет размер шрифта от 80% до 280%. Таким образом, самый низкий тег в облаке получит размер шрифта 80%, а самый высокий – 280%. Я решил пойти со следующей формулой
150 * (1.0+ (1,5 * м-MAXM / 2) / MAXM)
Это красиво дает размер шрифта от 75% до 300%, поскольку метрика изменяется от потенциала 0 до maxm.
Я бы проверял наличие каждого элемента и отслеживал «максимум» (элемент с наивысшим счетчиком, так как это будет ваша мера).
Затем вычислите процент заполнения для каждого элемента, по сравнению с элементом с максимальным значением (который равен 100%). Например:
foreach ($elements as $element) { $percentage = floor(($element['count'] / $maximum) * 100); }
Затем создайте стили CSS для 20/40/60/80/100 процентных значений и примените правильный стиль CSS в соответствии с процентом.
Или вы могли бы, как вы предложили рассчитать размер шрифта.
Сначала получите свой макс. и min и рассчитать распространение. ($ max – $ min). Приращение размера шрифта будет «шагом» – в основном ($ max – $ min) / $ spread.
Теперь вы можете рассчитать размер шрифта соответственно:
$min_size + ($element['occurrence'] - $smallest_array_value) * $step
Не забудьте округлить результат.
Могла бы написать вторую часть вам облако реализации облака мин и макс и распространение Im немного запутался.
Я сделал так, чтобы облако тегов вычислялось следующим образом:
$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.