О масштабировании тегов в облаке тегов

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

Какое "лучшее" выражение отображает частоту тега в размер шрифта?

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

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

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

Изменить: В соответствии с обсуждением в этом вопросе, меня интересует "стандартное" tagcloud, с изменениями размера шрифта.

3 ответа

Решение

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

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

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

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

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

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 квартилей диапазона, например, чтобы минимизировать влияние высоких выбросов

Другие вопросы по тегам