О масштабировании тегов в облаке тегов
-
19-09-2019 - |
Вопрос
Я внедряю облако тегов на мобильном устройстве.Детали модели данных и т.д. Здесь не особенно важны.Мой вопрос касается масштабирования тегов:
Какое "лучшее" выражение для сопоставления частоты тегов с размером шрифта?
Я посмотрел на этот пост обсуждение линейного и логарифмического масштабирования и этот ответ от Адриана Куна набросок полиномиального подхода для вдохновения.Тем не менее, я, кажется, припоминаю пост где-то в Интернете с гораздо большим исследованием этого вопроса.
Я тоже кое - что нашел " .лучшие практики" в блоге, хотя я и не уверен в провидении лучших практик.Они не дают никаких комментариев по поводу масштабирования частоты.
Какие альтернативы у меня есть для масштабирования тегов и какой метод является предпочтительным / стандартным?Я также рассматриваю минимальные размеры шрифтов, максимальное количество тегов, цветов и т.д.
Редактировать:В соответствии с обсуждением в этот вопрос, меня интересует "стандартное" облако тегов с вариациями размера шрифта.
Решение
В прошлом году я работал над небольшим проектом по облаку тегов, в котором я использовал что-то вроде
β = (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 квартилей диапазона, например, чтобы свести к минимуму влияние высоких выбросов