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 - розмір вершини
Для таблиці edges колонки такі:
  • обов'язкові:
  • source - id початкової вершини
  • target - id кінцевої вершини
  • необов'язкові:
  • label - позначка або позначення ребра
  • weight - вага ребра
Опціально доступні колонки "start" і "end" для динамічних графів. Після кількох тестових перевірок було вирішено використати SQLite3.

Скрипт заповнення БД на Python

Хто підкаже, як швидко з рядків отримати ПІБ, буду вдячний. На виході має бути ["Олена Прекрасна", "Тугарін Змій", "Альоша Попович"] (без прогалин і ком, тобто просто ім'я та прізвище через прогалину).

Візуалізація даних за допомогою Gephi

Як приклад візьмемо маленький граф: року з 1996 по 2003 рік. Він складається з 759 вершин і 437 ребер. Цю інформацію можна побачити під час імпортування графа:

вершини

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

візуалізації

Додатково при імпортуванні можна вибрати орієнтацію графа: орієнтований, неорієнтований або змішаний.

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

Зрештою вийшло ось це:

gephi

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

Далі наводяться скріншоти деяких із них.

візуалізації

візуалізації

Parallel Force Atlas

gephi

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

засіб

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

gephi

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