Время прочтения: 7 мин.

Gephi – инструмент для интерактивной визуализации данных, стремительно набирающий свою популярность. На сайте NTA уже можно найти несколько статей с информацией о самой программе, её возможностях, алгоритмах укладки графов. В нашей работе мы бы хотели осветить фильтрацию данных в Gephi.

Фильтры нужны для получения нового графа, удовлетворяющего каким-либо условиям. Конечно, вместо использования фильтров, можно сначала готовить данные по нужным условиям, а уже потом их импортировать в Gephi, но такой подход, по нашему мнению, избыточен. Изучать встроенные фильтры и их особенности мы будем на условном графе финансовых связей между объектами. Для этого подготовим два файла вершин и рёбер, соответственно Nodes и Edges, и заполним в них лишь обязательные столбцы (см. рис. 1 и рис.2).

Рис. 1. Файл с вершинами (Nodes)

Рис. 2. Файл с рёбрами (Edges)

Все возможные фильтры в программе сгруппированы в пять групп: Атрибуты, Динамика, Операторы, Рёбра, Топология. Чтобы применить какой-либо фильтр, достаточно перенести его мышкой в область «Наборы фильтров». К выбранному фильтру можно добавить подфильтр, чтобы создавать композицию условий.

Рис. 3. Граф взаимосвязей между объектами и панель с Фильтрами

Рассмотрим применение фильтров на практике. Предположим, нас заинтересовали финансовые связи двух объектов. Чтобы высветить на графе интересующие нас объекты и контрагентов, взаимосвязанных с ними, мы должны в поле «Наборы фильтров» составить набор из двух фильтров:

  • OR (из группы Операторы)
  • Ego Network (из группы Топология)

Перетаскиваем OR и под ним дважды размещаем Ego Network. В каждом Ego Network задаем ID интересующих нас условных объектов. Нажимаем «Применить» (см. рис. 4).

Рис. 4. Выделение групп связей двух объектов

Рассмотрим другую задачу. Узнаем есть ли среди объектов руководители всех видов. На этот раз потребуется лишь один фильтр:

  • По значению (из группы Атрибуты)

Нас интересует фильтрация по полю Position. Поле поддерживает регулярные выражения, поэтому, чтобы найти все должности, начинающиеся с буквы Р – необходимо в поле задать выражение «Р.*». На графе будут отображены все руководители (см. рис. 5).

Рис. 5. Фильтрация среди объектов всех руководителей

Но нам не хватает информации о связях данных объектов, для этого потребуется композиция фильтров:

  • Сеть соседей (из группы Топология)
  • По значению (из группы Атрибуты)

Перетаскиваем «Сеть соседей» и под ним размещаем фильтр «По значению» по уже знакомому нам регулярному выражению. Таким образом мы отобразили все объекты, являющимися руководителями, а также их связи.

Рис. 6. Отображение всех объектов-руководителей и их финансовые связи

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

При написании этой статьи мы столкнулись со скудностью русскоязычного описания всех фильтров, поэтому мы постарались собрать и систематизировать все данные о видах фильтров в виде справочного материала, который, по нашему мнению, поможет каждому в работе с фильтрами Gephi.

Справочник фильтров

Атрибуты

  1. Equal.
    1. Фильтр для вершин: оставляет вершины, удовлетворяющие шаблону, и ребра, которые их связывают.
    1. Фильтр для ребер: оставляет все вершины текущего графа и ребра, удовлетворяющие шаблону.
  2. Inter Edges. Фильтры доступны для вершин. Фильтры из Inter Edges дают возможность пользователю выбрать набор групп. Остаются все вершины исходного графа и ребра, соединяющие вершины соответствующих выбранных групп. Вершины различных выбранных групп связей не имеют.
  3. Intra Edges. Фильтры доступны для вершин. Фильтры из Intra Edges дают возможность пользователю выбрать набор групп. Остаются все вершины исходного графа и ребра, соединяющие вершины различных групп. Вершины, принадлежащие одной группе, связей не имеют.
  4. Nonnull.
    1. Фильтр для вершин: удаляет вершины, которые имеют значение Non-null.       
    1. Фильтр для ребер: удаляет ребра, которые имеют значение Non-null.
  5. Partition. Фильтр доступен для вершин.Фильтры из Partition дают возможность пользователю выбрать набор групп. От исходного графа остается граф, значения вершин которого принадлежат выбранным группам.
  6. Partition Count. Фильтр доступен для вершин. Фильтры из Partition Count дают возможность пользователю выбрать группы вершин, мощность которых принадлежит заданному диапазону. Под мощностью группы понимается количество элементов в группе.
  • Range. В данной папке находятся фильтры с числовым типом данных.
    • Фильтр для вершин: оставляет граф, значение вершин которого принадлежит заданному диапазону.
    • Фильтр для ребер. Оставляет все вершины исходного графа и ребра, значение которых принадлежит заданному диапазону.

Динамика

  1. Данный фильтр активируется только для динамичных графов. Позволяет включать временную шкалу и добавлять подфильтр.

Рёбра

  1. Edge Type. Оставляет все вершины и ребра с выбранным типом.
  2. Edge Weight. Оставляет все вершины графа и ребра, вес (‘Weight’) которых лежит в заданном диапазоне. Диапазон можно регулировать ползунком, а можно редактировать концы диапазона, но после редактирования необходимо нажать клавишу ‘Enter’. После нажатия на клавишу ‘Enter’ края ползунков сами примут нужное положение.

Замечание. Если в наборе данных будет отсутствовать столбец ‘Weight’ / ‘weight’, то Gephi создаст его сам, задав значения равные 1.

  • Mutual Edge.
    • Граф ориентированный/смешанный: оставляет все вершины графа и ребра, которые взаимны.

Замечание. Если граф смешанный и ребро имеет тип Undirected (неориентированное), то оно будет удалено, то есть такое ребро не считается взаимным.

  • Граф неориентированный: граф остается без изменений.
  • Self-Loop. Убирает у графа ребра-петли.

Операторы

  1. INTERSECTION. Пересечение графов, полученных с помощью подфильтров.
  2. Mask (Edges). Фильтр возвращает все вершины текущего графа и отфильтрованный граф, полученный подфильтром. Mask (Edges) позволяет скрыть/показать некоторые направленные отношения (зависит от выбора настройки any, both, source, target) между видимым графом и отфильтрованным графом.
  3. NOT (Edges), NOT (Nodes). Оператор NOT переворачивает результат подфильтра: то, что было скрыто, становится видимым, и наоборот. Это правило распространяется на Edges и Nodes соответственно.

 UNION. Объединение графов, полученных с помощью подфильтров.

Топология

  1. Degree Range.
    1. Граф неориентированный или смешанный (состоит из ориентированных и неориентированных ребер): удаляет из графа узлы, степень которых не принадлежит заданному диапазону.
    1. Граф ориентированный: удаляет из графа вершины, степень выхода которых не принадлежит заданному диапазону.
  2. EgoNetwork. Из исходного графа остается выбранная с помощью параметра Node Id вершина и соседей на глубине 1,2,3 или max.
  3. Giant Component. От текущего графа остается граф (гигантская компонента), у которого наибольшее количество связанных вершин.
  4. Has Selfloop. Оставляет в графе узлы, которые имеют хотя бы одну петлю, а также ребра, которые соединяют такие узлы.
  5. In Degree Range.
    1. Граф ориентированный: оставляет в графе вершины, степень входа которых принадлежит заданному диапазону, а также ребра, которые соединяют такие вершины.
    1. Граф неориентированный или смешанный (состоит из ориентированных и неориентированных ребер): граф остается без изменений.
  6. Kcore. От текущего графа остается граф, в котором все узлы имеют степень не менее k. В этом фильтре под степенью узла понимается степень узла в неориентированном графе или степень исхода узла или степень стока узла в ориентированном графе.
  7. Mutual Degree Range.
    1. Граф ориентированный: оставляет в графе вершины с их взаимными ребрами, степень взаимности которых принадлежит заданному диапазону.
    1. Граф неориентированный или смешанный (состоит из ориентированных и неориентированных ребер): граф остается без изменений.
  8. Neighbors Network. Оставляет соседей на глубине 1,2,3 или max у текущего графа. Под текущим графом понимается граф, полученный после применения подфильтра у Neighbors Network. 
  9. Out Degree Range.
    1. Граф ориентированный: оставляет в графе вершины, степень выхода которых принадлежит заданному диапазону, а также ребра, которые соединяют такие вершины.

Граф неориентированный или смешанный (состоит из ориентированных и неориентированных ребер): граф остается без изменений.