Чи може хтось запропонувати алгоритм для створення теплової карти для візуалізації різноманітності точок? Прикладом застосування може бути картування районів з високим різноманіттям видів. Для деяких видів було складено карту кожної окремої рослини, що призвело до високої кількості балів, але з дуже малим значенням з точки зору різноманіття району. Інші області справді відрізняються великою різноманітністю.
Розглянемо наступні вхідні дані:
x y cat
0.8 8.1 B
1.1 8.9 A
1.6 7.7 C
2.2 8.2 D
7.5 0.9 A
7.5 1.2 A
8.1 1.5 A
8.7 0.3 A
1.9 2.1 B
4.5 7.0 C
3.8 4.0 D
6.6 4.8 A
6.2 2.4 B
2.2 9.1 B
1.7 4.7 C
7.5 7.3 D
9.2 1.2 A
та отримана карта:
У верхньому лівому квадранті є дуже різноманітний пластир, тоді як у нижньому правому квадранті є область з високою точковою концентрацією, але низькою різноманітністю. Два способи візуалізації різноманітності можуть бути використанням традиційної теплової карти або підрахунку кількості категорій, представлених у кожному багатокутнику. Як показано на наступних зображеннях, ці підходи мають обмежене використання, оскільки теплова карта показує найбільшу інтенсивність в нижньому правому куті, тоді як підхід до вирівнювання виглядав би точно так само, якби була лише одна категорія (це можна було б вирішити шляхом збільшення розміру багатокутників, але потім результат стає зайвим зернистим).
Одним із підходів, який я думав зробити це, було б прокласти традиційний алгоритм теплової карти за кількістю точок різних категорій у визначеному радіусі, а потім використовувати це підрахунок як вагу для точки при генерації теплової карти. Однак я думаю, що це може бути схильним до небажаних артефактів, як взаємне підкріплення, що призводить до дуже гострих результатів. Крім того, тісно відображені точки одного типу будуть продовжувати проявлятися як високі концентрації, тільки не в однаковій мірі.
Іншим підходом (можливо, кращим, але обчислювально дорожчим) був би:
- Обчисліть загальну кількість категорій у наборі даних
- Для кожного пікселя у вихідному зображенні:
- Для кожної категорії:
- обчислити відстань до найближчої репрезентативної точки (r) [ймовірно обмеження деяким радіусом, за межами якого вплив незначний]
- додайте зважування, пропорційне 1 / r 2
- Для кожної категорії:
Чи є вже алгоритми, про які я не знаю цього, чи інші способи візуалізації різноманітності?
Редагувати
За пропозицією Томіслава Муїча я обчислював теплові карти для кожної категорії та нормалізував їх за допомогою наступної формули (растровий калькулятор QGIS):
((heatmap_A@1 >= 1) + (heatmap_A@1 < 1) * heatmap_A@1) +
((heatmap_B@1 >= 1) + (heatmap_B@1 < 1) * heatmap_B@1) +
((heatmap_C@1 >= 1) + (heatmap_C@1 < 1) * heatmap_C@1) +
((heatmap_D@1 >= 1) + (heatmap_D@1 < 1) * heatmap_D@1)
із наступним результатом (коментарі під його відповіддю):