Візуалізація за допомогою матричних графіків
Час спробувати перший «просунутий» спосіб візуалізації графів — матричний графік. Для цього в 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()