НачатьНачать бесплатно

Визуализация с помощью матричных графиков

Настало время попробовать первый «продвинутый» метод визуализации графов — матричный график. Для этого в библиотеке nxviz есть функция matrix(). Как и все функции верхнего уровня API nxviz, она возвращает объект осей matplotlib, который можно отобразить с помощью plt.show().

nxviz — это пакет для наглядной визуализации графов. Внутри функция matrix использует nx.to_numpy_array(G), которая возвращает граф в матричном виде. Каждый узел представлен одним столбцом и одной строкой, а наличие ребра между двумя узлами обозначается значением 1. При этом из метаданных сохраняется только weight; все остальные метаданные теряются — вы убедитесь в этом с помощью оператора assert.

Обратная функция nx.from_numpy_array(A) позволяет быстро создать граф из массива NumPy. По умолчанию создаётся граф типа Graph(); если нужен DiGraph(), это необходимо указать через именованный аргумент create_using, например: nx.from_numpy_array(A, create_using=nx.DiGraph).

Обратите внимание: matplotlib.pyplot и networkx уже импортированы как plt и nx соответственно, а граф T предварительно загружен. Для удобства и скорости из сети было выбрано только 100 рёбер.

Это упражнение является частью курса

Введение в анализ сетей на Python

Посмотреть курс

Инструкции к упражнению

  • Импортируйте matrix из nxviz.
  • Постройте граф T в виде матричного графика:
    • Создайте матричный график m с помощью функции nv.matrix(), передав T в качестве аргумента.
    • Отобразите график с помощью plt.show().
  • Преобразуйте граф в матричный формат, а затем конвертируйте его обратно в формат NetworkX как ориентированный граф. Этот шаг уже выполнен за вас.
  • Убедитесь, что поле метаданных category отсутствует в каждом узле. Это тоже уже сделано за вас — нажмите Отправить ответ, чтобы увидеть результаты!

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Import nxviz
____

# Create the matrix plot: m
m = ____

# Display the plot
____

# Convert T to a matrix format: A
A = nx.to_numpy_array(T)

# Convert A back to the NetworkX form as a directed graph: T_conv
T_conv = nx.from_numpy_array(A, create_using=nx.DiGraph())

# Check that the `category` metadata field is lost from each node
for n, d in T_conv.nodes(data=True):
    assert 'category' not in d.keys()
Редактировать и запускать код