Интерактивная визуализация сетей с использованием языка R

Автор: Хакимова Т.В.

Журнал: Теория и практика современной науки @modern-j

Рубрика: Основной раздел

Статья в выпуске: 6 (48), 2019 года.

Бесплатный доступ

В статье рассматривается пример визуализации сетей с использованием пакета visNetwork. Отмечаются положительные стороны использования данного пакета в сравнении с пакетом igraph. Описывается алгоритм создания интерактивной визуализации. Приводится пример создания интерактивной графики на примере набора данных lesmis.

Язык r, сетевые данные

Короткий адрес: https://sciup.org/140274772

IDR: 140274772

Текст научной статьи Интерактивная визуализация сетей с использованием языка R

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

В рамках данного исследования, нами рассматриваются возможности визуализации сетевых данных средствами языка программирования R. Язык R используется для анализа данных, а, как известно, одним из лучших вариантов анализа данных выступает их визуализация. В ядре языка присутствуют функции для визуализации разных объектов, однако, базовая графика не позволяет работать с сетевыми данными.

Можно использовать другие сервисы и технологии для визуализации сетевых структур, однако, наиболее корректным на наш взгляд видится использование одной технологии как для обработки и анализа данных, так и для их визуализации. Для расширения функционала языка R, в целях визуализации сетевых структур, можно использовать ряд пакетов языка, находящихся в официальном репозитории пакетов CRAN [1].

Наиболее частым пакетом, для визуализации сетевых данных, является igraph [2]. Он может использоваться для визуализации любых сетевых данных. В настоящее время доступны сборки под языки R, Python, C++ и под систему компьютерной алгебры Mathematica. Данный пакет вполне можно использовать, но только в том случае, если есть задача получить статичные визуализации сетевых структур. Для создания интерактивной визуализации, в языке программирования R стандартно используются javascript библиотеки, упакованные в соответствующие пакеты языка R.

В рамках данного исследования нами выбран пакет visNetwork [3], который представляет собой интерфейс для языка R к библиотеке vis. js, которая в свою очередь используется для визуализации таблиц, графиков, временных рядов и сетевых структур [4]. Как понятно из названия, visNetwork используется для визуализации сетевых структур. Помимо интерактивности, еще одним преимуществом данного пакета является тот факт, что он полностью совместим с технологиями R Markdown [5] и Shiny [6], что позволяет создавать сложные веб-приложения с использованием и этих данных.

Для примера визуализации сетевых данных, воспользуемся пакетом geomnet, содержащим набор данных lesmis (Les Misérables Characters), в котором содержатся сведения из Романа Виктора Гюго «Отверженные». В данном наборе содержится информация о количестве встреч персонажей романа. Рассматривая данные в качестве ненаправленного графа, в качестве узлов будем рассматривать персонажи, а ребра между двумя узлами будут указывать, что они появились в одной и той же главе книги, вес каждой связи определяется тем, как часто происходило такое появление.

В целом, рассматриваемый алгоритм визуализации сетевых данных включает в себя следующие основные шаги:

  • 1.    Подготовка исходных данных;

  • 2.    Создание узлов графа;

  • 3.    Создание ребер графа;

  • 4.    Объединение структуры в кластеры;

  • 5.    Настройка визуализации данных;

Для каждого шага, представленного в алгоритме, существуют или отдельные функции, или набор функций. Так, например, для создания узлов графа используется выделение их в соответствующие датафреймы, при помощи стандартных выборок. Для построения графа используется специальная функция graph_from_data_frame, принимающая на вход ребра, подготовленные заранее из исходных данных набора lesmis.

Для построения кластеров используется функция cluster_louvain. После соответствующей настройки, с использованием пайплайнов внутри пакета visNetwork, можно создать вполне удачную визуализацию (рисунки

1,2).

Рисунок 1 – Визуализация графа по данным lesmis (общий вид)

Рисунок 2 – Визуализация графа по данным lesmis (приближенный вид)

Как видно, из представленного примера, дополнительные пакеты языка R могут с легкостью помогать строить не только сложные сетевые структуры, но и осуществлять взаимодействие с ними.

Список литературы Интерактивная визуализация сетей с использованием языка R

  • The Comprehensive R Archive Network [Электронный ресурс] URL: https://cran.r-project.org (дата обращения 17.06.2019)
  • igraph - Network analysis software [Электронный ресурс] URL: https://igraph.org (дата обращения 17.06.2019)
  • CRAN - Package visNetwork [Электронный ресурс] URL: https://cran.r-project.org/web/packages/visNetwork/index.html (дата обращения 17.06.2019)
  • vis.js - A dynamic, browser based visualization library. [Электронный ресурс] URL: https://visjs.org (дата обращения 17.06.2019)
  • R Markdown [Электронный ресурс] URL: https://rmarkdown.rstudio.com (дата обращения 17.06.2019)
  • Shiny [Электронный ресурс] URL: https://shiny.rstudio.com (дата обращения 17.06.2019)
Статья научная