Автор оригинала: Isai B. Cicourel.
Визуализация в записной книжке Jupyter с использованием vis.js
Что такое vis.js?
vis.js
-это динамическая библиотека визуализации на основе браузера. Библиотека разработана таким образом, чтобы быть простой в использовании, обрабатывать большие объемы динамических данных, а также позволять манипулировать данными и взаимодействовать с ними. Это позволяет нам визуализировать данные в различных формах и добавлять контроль над параметрами физики. Страница загрузки: vis.js
Что такое Юпитер?
Jupyter Notebook
-это веб-приложение с открытым исходным кодом, которое позволяет создавать и обмениваться документами, содержащими живой код, уравнения, визуализации и пояснительный текст. Страница загрузки: юпитер
Что такое Анаконда?
Anaconda
– ведущая платформа для изучения открытых данных, работающая на Python. Он объединяет блокнот Jupyter и включает в себя более 100 самых популярных пакетов Python, рецептов и Scala для науки о данных. Страница загрузки: анаконда
Почему меня это должно волновать?
Причина успеха ноутбука Jupyter заключается в том, что он выделяется в форме программирования под названием грамотное программирование . Грамотное программирование-это стиль разработки программного обеспечения, впервые предложенный компьютерным ученым из Стэнфорда Дональдом Кнутом . Этот тип программирования подчеркивает подход, основанный на прозе, когда изложение с удобным для человека текстом перемежается блоками кода. Он отлично справляется с демонстрационными, исследовательскими и преподавательскими задачами, особенно для науки. Добавив расширенные инструменты визуализации в сочетании с javascript, мы можем расширить его функциональность, добавив тонкую настройку зернистости.
Быстрые заметки
- Мы будем использовать Anaconda 4.3.1 с версией Python 3.6.
vis.js
версия 4 используется для визуализации графика.- Для этого урока рекомендуется знание Javascript и Python .
- В этом руководстве не рассматривается настройка и установка
anaconda
.
Установка Необходимой Библиотеки
Прежде чем мы начнем, нам понадобится anaconda , который связывает блокнот Jupyter и кучу полезных библиотек. После установки мы загрузим vas.ja и распакуем его в нужное место. Нам нужно будет настроить vis.js
папка распространения внутри .jupyter/jupyter_notebook_config.py
добавив следующую строку (где dist
– это расположение папки распространения vis.js
библиотеки.):
c.NotebookApp.extra_static_paths = ["/Users/isai/Documents/Jupyter/Viz/dist"]
Запуск ноутбука Jupyter
Чтобы запустить Jupyter Notebook, откройте терминал и выполните:
jupyter notebook
Как только ноутбук запустится, наш браузер по умолчанию откроет навигатор Юпитера. Мы создадим новый файл в нужном месте.
Создание визуализации
Есть два варианта демонстрации сетей с помощью vis.js
,
- Обработка информации в Javascript и отображение результатов с помощью встроенного HTML.
- Обработка информации в Python, отправка ее во встроенный Javascript и отображение во встроенном HTML.
При желании мы можем иметь элементы управления физикой во встроенном HTML
Встроенный Javascript
Чтобы отобразить javascript в Jupyter Notebook, мы сначала создадим ячейку python, в которую мы импортируем необходимую библиотеку python, необходимую для отображения фрагментов HTML.
from IPython.core.display import display, HTML from string import Template import json
Следующим шагом является создание встроенного HTML-объекта, который будет содержать визуализацию. Здесь мы создаем элемент div
в записной книжке.
%%html
И, наконец, мы добавляем встроенный вызов javascript, который использует require для указания vis.js
библиотека, которую мы ранее добавили в конфигурацию jupyter, мы создаем сеть и добавляем в нее элемент контейнера div
.
%%javascript requirejs.config({ paths: { vis: 'vis' } }); require(['vis'], function(vis){ var nodes = [ {id: 1, label: 'Beyonce', group: 'United States'}, {id: 2, label: 'Barak Obama', group: 'United States'}, {id: 3, label: 'Miley Cyrus', group: 'United States'}, {id: 4, label: 'Pope Francis', group: 'Vatican'}, {id: 5, label: 'Vladimir Putin', group: 'Rusia'} ]; // create an array with edges var edges = [ {from: 1, to: 2}, {from: 1, to: 3}, {from: 2, to: 4}, {from: 2, to: 5} ]; // create a network var container = document.getElementById('mynetwork'); var data= { nodes: nodes, edges: edges, }; var options = { width: '800px', height: '400px' }; var network = new vis.Network(container, data, options); });
Как только мы запустим все ячейки, мы получим следующую визуализацию под ячейкой HTML.
Python для встроенного Javascript
Теперь мы собираемся отобразить этот график в блокноте с помощью vis.js
получение данных из Python. Первый шаг-перенести этот график в Javascript. Здесь мы выбираем экспорт графика в формате JSON. Поскольку мы хотим избежать сохранения файла JSON на диск, мы переводим данные на внешний интерфейс. Обратите внимание, что vis.js
ожидает, что каждое ребро будет объектом с источником и целью.
from IPython.core.display import display, HTML from string import Template nodes = [ {'id': 1, 'label': 'Beyonce', 'group': 'United States'}, {'id': 2, 'label': 'Barak Obama', 'group': 'United States'}, {'id': 3, 'label': 'Miley Cyrus', 'group': 'United States'}, {'id': 4, 'label': 'Pope Francis', 'group': 'Vatican'}, {'id': 5, 'label': 'Vladimir Putin', 'group': 'Rusia'} ] edges = [ {'from': 1, 'to': 2}, {'from': 1, 'to': 3}, {'from': 2, 'to': 4}, {'from': 2, 'to': 5} ]
Это что-то вроде взлома. Поскольку %javascript
magic выполняется на стороне клиента, окно настроено. Поэтому мы привязываем данные к окну, чтобы они были глобально доступны. Все браузеры поддерживают объект window. Он представляет собой окно браузера. Все глобальные объекты JavaScript, функции и переменные автоматически становятся членами объекта window. Глобальные переменные – это свойства объекта окна. Но подождите, это становится лучше: Python JSON.dumps преобразует выходные данные в строку JSON! Единственный трюк сейчас-это выполнение некоторого кода JS, который загружает дамп JSON.
from IPython.display import Javascript import json # Transform the graph into a JSON graph data = {"nodes":nodes, "edges":edges} jsonGraph = json.dumps(data, indent=4) # Send to Javascript Javascript("""window.jsonGraph={};""".format(jsonGraph))
Следующим шагом является создание встроенного HTML-объекта, который будет содержать визуализацию. Здесь мы создаем элемент div
в записной книжке.
%%html
И, наконец, мы добавляем встроенную ячейку Javascript, которая получает узлы и ребра из глобальной переменной window.json Graph
.
%%javascript requirejs.config({ paths: { vis: 'vis' } }); require(['vis'], function(vis){ // create a network var container = document.getElementById('mynetwork'); var options = { width: '800px', height: '400px' }; // We load the JSON graph we generated from iPython input var graph = window.jsonGraph; // Display Graph var network = new vis.Network(container, graph, options); });
Как только мы запустим все ячейки, мы получим следующую визуализацию под ячейкой HTML.
Заворачивая Вещи
Добавив vis.js
визуализация в Jupiter
мы расширяем функциональность и позволяем нам обрабатывать и извлекать данные в Python
, показывая его визуализацию в Javascript
, которая не только отображает график, но и позволяет добавлять элементы управления физикой и персонализированные действия.
Вы Пробовали Следующее
Теперь, когда вы знаете основы, как насчет проверки некоторых примеров из vis.js и их реализация. Как насчет добавления элементов управления физикой?
Поиграйте и проверьте, что происходит. Создайте свою собственную визуализацию; идея состоит в том, чтобы узнать что-то новое. Если вам нравится этот урок, поделитесь им со своими друзьями.