Привет всем, этот блог является продолжением моего предыдущего блога о D3 в Jupyter Notebook, в этом блоге будут использоваться базовые концепции из предыдущего блога. Я собираюсь познакомить вас с сетями и сетевыми диаграммами, используя sigma js. Давай займемся этим!

НАУКА О СЕТИ:

Наука о сетях - это изучение сложных сетей, таких как телекоммуникационные сети, компьютерные сети, биологические сети и даже семантические / социальные сети. Обычно они состоят из отдельных элементов, которые представлены узлами, и связи между этими узлами осуществляются через связи, называемые ребрами.

На это поле повлияли различные теории, такие как:

  • Теория графов - Математика
  • статистическая механика - физика
  • Интеллектуальный анализ данных и визуализация информации - информатика (это то, что мы расскажем)
  • Логическое моделирование - Статистика
  • Социальная структура - социология

Эти исследования сетевых представлений о различных явлениях - приводят к прогнозным моделям этих явлений.

Визуальное представление сети:

Это отличная статья, чтобы узнать больше о сетях и их различных типах. Я буду публиковать больше статей в этой области, поскольку я начал исследовать эту область и нашел ее очень интересной. Теперь перейдем к Sigma js, который поможет нам использовать эти концепции.

Sigma js:

Sigma - это библиотека JavaScript, предназначенная для рисования графиков. Он упрощает публикацию сетей на веб-страницах и позволяет разработчикам интегрировать исследование сети в многофункциональные веб-приложения. Он был разработан как механизм, который можно настраивать и использовать для разработки интерактивных веб-приложений, отображающих графические визуализации. Некоторые из функций:

  • Пользовательский рендеринг: встроенные рендеры Canvas или WebGL, которые помогут вам рендерить интерактивную 2D- и 3D-графику в любом совместимом веб-браузере без использования плагинов. А встроенные средства визуализации также предоставляют множество способов настройки визуализации.
  • Ориентация на интерактивность: вы можете поймать, когда пользователь щелкает или наводит указатель мыши на узел. Вы можете поймать, когда пользователь перетаскивает график или увеличивает масштаб, и всегда знать положение графика относительно экрана. И многое другое.
  • Мощная графическая модель: Sigma - это просто механизм рендеринга, но вы можете захотеть сделать больше, например, запустить свои собственные алгоритмы графа. Для этого можно настроить графическую модель сигмы, и вы можете добавлять свои собственные индексы к данным.
  • Расширяемость: легко разрабатывать плагины или простые сниппеты для расширения возможностей Sigma. Некоторые из них уже доступны в основном репозитории для чтения некоторых популярных форматов файлов графов или, например, для запуска сложных алгоритмов компоновки.
  • Совместимость: Sigma работает во всех современных браузерах, поддерживающих Canvas, и работает быстрее в браузерах с поддержкой WebGL.

Среди особенностей, которые делают библиотеку Sigma.js интересной, можно выделить:

  • Возможность связывать методы
  • Управление событиями
  • Возможность добавлять плагины, использовать файлы GEXF, алгоритмы ForceAtlas2,…
  • Api простой и доступный
  • Персонализированное обслуживание окрашенной графики
  • Вставка с использованием фреймов

На веб-сайте sigma js есть краткое руководство (вы можете увидеть изображение ниже), но мы попробуем использовать простой пример из PyData New York Брайана Коффи, чтобы реализовать его в Jupyter Notebook. С подробностями выступления вы можете ознакомиться здесь.

Сверху мы знаем, что есть 3 части:

  • Данные (необходимо представить в словаре)
  • HTML-код (вы можете проверить мой предыдущий блог о D3 в jupyter Notebook, чтобы получить простое объяснение)
  • Наконец, вывод.

Данные:

Мы уже обсуждали, что вам требуются узлы и края для создания сети. В блокноте Jupyter данные будут представлены в формате словаря. Изображение ниже даст вам представление.

СОЗДАНИЕ СЕТЕВОЙ ДИАГРАММЫ С ИСПОЛЬЗОВАНИЕМ SIGMA JS В НОУТБУКЕ JUPYTER:

Теперь давайте посмотрим, как они выглядят во фрейме данных, это случайно сгенерированные данные, и ссылка на них находится здесь (вот ссылка на GitHub для этого):

Узлы:

  • У нас есть идентификатор, представляющий узел, и метка для него, здесь они такие же, но вы можете дать ему разные имена (например, имена персонажей игры трон - чтобы показать их отношения друг с другом)
  • У вас есть размер узла (дающий вам величину узла)
  • И соответствующие координаты X и Y в пространстве.

Края:

  • У каждого ребра есть идентификатор, объясняющий отношение узлов.
  • У источника есть идентификатор узла, на котором он начинается.
  • У цели есть идентификатор узла, на котором она заканчивается.

Код сценария Java:

Скомпилируйте их и выполните:

Теперь давайте посмотрим на интерактивный визуальный результат (нажмите на гифку ниже).

Надеюсь, вам понравился блог. Моя следующая пара блогов будет посвящена сетевой науке (теории графов и другим связанным деталям), Java-скриптам и, возможно, представит dimple js.

Ссылка:





Py Data Talk



Http://barabasi.com/networksciencebook/chapter/1#vulnerability