Gephi як засіб візуалізації даних
Так сталося, що я виявився асистентом у професора в університеті. Ніколи не думав, що доведеться стикатися з оцінкою ризиків і візуалізацією даних, будучи за покликанням криптографом. Курс називається «Інформаційні мережі» і включає: аналіз випадкових процесів, моделювання малих світів; комп'ютерні алгоритми з метою оцінки властивостей мережі; експериментальні дослідження великих мереж, а також аналіз ризиків, які важко передбачити.
Зважаючи на те, що курс читається в основному для ІТ-шників, лектор зробив ставку на те, щоб дати достатньо теорії з мінімумом математики та великою кількістю практики. Більшість вищезазначених завдань підходить програма NetLogo. Вона включає власну мову програмування високого рівня, що дозволяє з легкістю моделювати різні випадкові процеси. Для візуалізації різноманітних даних було обрано програму Gephi.
Власне постановка завдання була такою: візуалізація будь-яких реальних даних засобами Gephi.
Генерація даних
Формати файлів Gephi
Gephi розуміє досить велику кількість форматів файлів.
Як видно з малюнка, найкращий варіант використовувати gexf. Як виявилося, це відкритий формат та бібліотеку з легкістю можна завантажити звідси. На сайті пишеться, що Libgexf зараз працює тільки на Linux (перевірено в Ubuntu 8.10 і 9.04). Не довго думаючи, вирішив завантажити вихідники і скомпілювати під Ubuntu 11.10 з інтерфейсами для Python (оскільки решту вирішив реалізовувати на ньому). Згенерував тестовий файл і вирішив запустити в Gephi, але з її допомогою не відкрилися ні мій файл, ні завантажені з інтернету, ні навіть той, що сама зберегла. Не знаю що за баг, але, поколупавши трохи і спробувавши на двох машинах, вирішив відцієї витівки відмовитися та шукати альтернативу. Після того, як погрався з CSV і зрозумів, що його функціонала мало, натрапив на імпорт із БД.
Його можна знайти в «File-> Import Database -> Edge list. ». Спочатку я думав, що Edge list це лише імпорт ребер, але виявилося, що імпортуються також і вершини. Як БД можна використовувати SQLite, MySQL, PostgreSQL та Teradata. У вікні імпорту зверху є підказка до параметрів таблиць. Має бути дві таблиці: nodes і edges. Таблиця nodes повинна містити колонки:
- обов'язково:
- id - номер вершини
- необов'язково:
- label - позначка або позначення вершини
- x - координата x на площині, де буде розташована вершина графа
- y - координата y на площині, де буде розташована вершина графа
- size - розмір вершини
- обов'язкові:
- source - id початкової вершини
- target - id кінцевої вершини
- необов'язкові:
- label - позначка або позначення ребра
- weight - вага ребра
Скрипт заповнення БД на Python
Хто підкаже, як швидко з рядків отримати ПІБ, буду вдячний. На виході має бути ["Олена Прекрасна", "Тугарін Змій", "Альоша Попович"] (без прогалин і ком, тобто просто ім'я та прізвище через прогалину).
Візуалізація даних за допомогою Gephi
Як приклад візьмемо маленький граф: року з 1996 по 2003 рік. Він складається з 759 вершин і 437 ребер. Цю інформацію можна побачити під час імпортування графа:

або у вікні"Context".

Додатково при імпортуванні можна вибрати орієнтацію графа: орієнтований, неорієнтований або змішаний.
Далі виберемо вікно Ranking для початкового редагування графа. Залежно від ступеня розфарбуємо всі вершини у відтінки синього кольору і задамо розмір самої вершини. Рекомендую задавати максимальний розмір вершини, що дорівнює максимальному ступеню вершини або в 2 рази більше.
Зрештою вийшло ось це:

Тепер, щоб красиво все уявити, виберемо вікно Layout. У цьому вся вікні представлені алгоритми, які можна використовуватиме упорядкування графа.
Далі наводяться скріншоти деяких із них.


Parallel Force Atlas

Ще вершини можна прикріпити до однієї з осей, проте це вибирається у вікні Ranking -> "Coordinates"

На графі можна вибрати поле «label». Наприклад:

Gephi є хоч і молодим, але дуже потужним засобом візуалізації різних даних, що підійде як новачкові, так і досвідченому користувачеві. Використання баз даних дозволяє швидко та легко отримати необхідні вхідні дані для візуалізації.