О масштабировании тегов в облаке тегов - PullRequest
6 голосов
/ 25 августа 2009

Я реализую облако тегов на мобильном устройстве.Детали модели данных и т. Д. Здесь не особенно важны.Мой вопрос касается масштабирования тегов:

Какое «лучшее» выражение для сопоставления частоты тегов с размером шрифта?

Я смотрел на этопост обсуждение линейного и логарифмического масштабирования и этот ответ из эскиза Адриана Куна о полиномиальном подходе к вдохновению.Тем не менее, я, кажется, помню пост в каком-то месте в Интернете с гораздо большим исследованием этой проблемы.

Я также нашел некоторые " лучшие практики " в блоге, хотя я не уверенпровидения лучших практик.Они не комментируют масштабирование частоты.

Какие у меня есть альтернативы для масштабирования тегов, и какой метод является предпочтительным / стандартным?Я также рассматриваю минимальные размеры шрифтов, максимальное количество тегов, цветов и т. Д.

Редактировать: Согласно обсуждению в этот вопрос , меня интересует "стандартное" tagcloud с шрифтомизменения размера.

Ответы [ 3 ]

3 голосов
/ 27 октября 2010

В прошлом году я работал над небольшим проектом облака тегов, в котором использовал что-то вроде

β = (int) (((maxθ - minθ) x ω) + minθ + 0,5)
где ω - взвешивание, предварительно рассчитанное по некоторой метрике (в вашем случае частота шрифта), minθ и maxθ - нижняя и верхняя границы, а β - конечное значение. Это может быть применено к любой визуальной характеристике (размер шрифта, цвет, вес, если поддерживается и т. Д.).

Я обнаружил, что линейное и логарифмическое масштабирование имеют тенденцию зависеть от распределения набора данных. Я обнаружил, что в наборах данных с заметными выбросами tanh был полезен для «сглаживания» результирующих значений.

2 голосов
/ 25 августа 2009

В этом PDF-файле есть отличное обсуждение, в котором обсуждаются масштабирование, кластеризация и усечение тегов для отображения.

0 голосов
/ 24 июня 2011

Решение, которое я нашел, работает следующим образом

font_size = (max_font_size - min_font_size) * (Math.sin(1.5*(X)) + minsize

где X - нормализованное значение, которое вы хотите отобразить на размер шрифта

X = (this_value-min_value)/(max_value-min_value)

это увеличивает разность размеров для нижних 3 квартилей диапазона, например, чтобы минимизировать влияние высоких выбросов

...