Рубрики
Без рубрики

Python Networkx – Библиотека графов Python

Networkx, Библиотека Python Graph, Python Networkx, Учебное пособие на NetworkX, Установка Networkx, Networkex Right Sloits, края, направленные графики, графические атрибуты, график построения, руководящий график NetworkX Python.

Автор оригинала: Pankaj Kumar.

Python NetworkX Модуль позволяет нам создавать, манипулировать и учебную структуру, функции и динамику сложных сетей.

1. Python Networkx.

  • Networkx подходит для проблем с графиком реального мира и хорош при обращении Большие данные также.
  • Поскольку библиотека чисто сделана в Python, этот факт делает его высокоэффективным, портативным и достаточно эффективным одновременно.
  • Это открытый источник и выпущен в 3-кратном лицензии BSD.

2. Почему networkx?

NetworkX дает вам много причин пойти с ним. Ниже приведены некоторые особенности NetworkX, которые заставляют его пойти с:

  • Networkx имеет многочисленные стандартные алгоритмы графика
  • Он поддерживает структуры данных для графов, диграфи и многографов
  • Он обеспечивает различную структуру сети и меры для анализа
  • Создание классических/случайных графиков и синтетических сетей намного проще с использованием генераторов, предоставляемых в упаковке
  • Узлы в вашей сети или графе могут быть абсолютно что угодно, будьте изображения, данные XML или что-то еще
  • Края также могут проводить произвольные данные, такие как Timestamp и вес
  • Это было хорошо проверено примерно 90% кодовым покрытием

Кроме того, он имеет дополнительную выгоду, потому что он основан на чистом Python и поэтому он имеет синтаксис быстрого прототипирования и очень легко освоить. Давайте начнем!

3. Начало работы с NetworkX

NetworkX требует, чтобы Python.7 установлен на машине. Давайте завершим установку в качестве первого шага.

3.1) Установите модуль NetworkX

Мы можем установить NetworkX, используя индекс пакета Python (Pip):

pip install networkx

Если вы сталкиваетесь с любыми проблемами при установке пакета, используя PIP, установите его из GitHub, используя команду git:

pip install git://github.com/networkx/networkx.git

3.2) Использование NewiveX

Теперь, когда у нас есть Networkx, установленные на нашей машине, мы можем использовать его в любом из наших сценариев, используя следующее оператор импорта:

import networkx

3.3) Создание графов

Поскольку библиотека NetworkX используется для управления отношениями с использованием структуры графа, мы можем начать создавать график без узлов и ребра:

import networkx
graph = networkx.Graph()

Поскольку нет узлов или ребер, мы не можем видеть график, поэтому давайте будем использовать IDLE для проверки, создан ли график или нет:

3.4) Добавление узлов на график

Добавление и проверка узлов довольно просты и могут быть сделаны как:

graph.add_node(1)

Или использование списка как:

graph.add_nodes_from([2,3])

И увидеть узлы в существующем графике:

graph.nodes()

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

3.5) Добавление ребер между узлами

Добавление и проверка ребер довольно просты, а также можно сделать как:

graph.add_edge(1,2)

Или использование списка как:

graph.add_edges_from([(1,2),(2,3)])

И чтобы увидеть узлы в существующем графике, мы можем снова распечатать края объекта графа:

graph.edges()

Когда мы запускаем эти набор команд, мы увидим следующий вывод:

4. Атрибуты

Графики – это структуры данных, которые используются для подключения связанных данных и показывают взаимосвязь между ними с использованием веса. Этот вес можно назвать атрибутом соотношения двух узлов на графике. Кроме того, для выставления свойств для узла или края или для самого графика мы можем также использовать атрибуты.

4.1) Атрибуты графа

Мы можем назначить метаданные на график, добавив атрибуты графика на объект графа. Давайте посмотрим фрагмент кода о том, как это можно сделать:

graph.graph["day"]="Monday"
graph.graph

4.2) Атрибуты узла

Здесь мы добавим атрибуты узлам объекта графа:

graph.add_node(1, time='5pm')
graph.add_nodes_from([3], time='2pm')
graph.node[1]
graph.node[1]['room'] = 714
graph.nodes(data=True)

4.3) Краевые атрибуты

Наконец, мы назначаем некоторые атрибуты к краям объекта графа. Чтобы назначить атрибуты по краям:

graph.add_edge(1, 2, weight=4.7 )
graph.add_edges_from([(3,4),(4,5)], color='red')
graph.add_edges_from([(1,2,{'color':'blue'}), (2,3,{'weight':8})])
graph[1][2]['weight'] = 4.7
graph.edge[1][2]['weight'] = 4

Как только мы добавили атрибуты на график, узлы и края, мы, наконец, можем распечатать все данные:

5. Направленный график

В последнем разделе мы видели, что мы могли назначить атрибуты к краям графика. Мы можем создать направленный график и добавить взвешенные края, как показано ниже.

DG=networkx.DiGraph()
DG.add_weighted_edges_from([(1,2,0.5), (3,1,0.75)])
DG.out_degree(1,weight='weight')
DG.degree(1,weight='weight')
DG.successors(1)
DG.neighbors(1)

Как только мы запустим эти команды, мы сможем увидеть соседей и преемников графа, которую мы только что сделали:

6. Рисование графика

До сих пор мы выполняем различные операции на графиках, но не в состоянии визуализировать любую из операций. Теперь давайте попробуем их визуализировать. Для этого нам понадобится помощь библиотеки MatPlotlib:

import matplotlib.pyplot as plt
networkx.draw(graph)
networkx.draw_random(graph)
networkx.draw_circular(graph)
networkx.draw_spectral(graph)
plt.show()

И результат вышеупомянутых графов можно рассматривать как:

7. Заключение

В этом посте мы видели, что NetworkX делает его очень легко создавать и работать с графиками. Мы видели несколько примеров создания графов и назначения атрибутов, весов и направления к краям графиков.

NetworkX позволяет легко создавать графики без особых хлопот и всего несколькими строками кода. Он также имеет генераторы для графов и различных сетей, а также легко проанализировать графики.

Ссылка: API док