ПочатиПочніть безкоштовно

Візуалізація за допомогою матричних графіків

Час спробувати перший «просунутий» спосіб візуалізації графів — матричний графік. Для цього в 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 для кожної вершини втрачено. Це теж уже зроблено — натисніть "Submit Answer", щоб побачити результати!

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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()
Редагувати та запускати код