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

Графики в Python для уровня компьютерной науки

Узнайте, как построить графики в Python для компьютерной науки, используя пакет NetworkX. Используется в алгоритме Dijkstra, структурах данных и многое другое.

Автор оригинала: Robin Andrews.

Часть 1 – Основы Networkx

ettewxx Это мощный пакет Python, который позволяет легко работать с графиками в Python. Объединяя его с matplotlib.pyplot Пакет даже делает его простым для рисования графов. Это очень полезно при изучении или обучения о Графики для уровня компьютерной науки.

# Auto formatting - completely optional, requires installation.
%load_ext nb_black

Настраивать

import networkx as nx

G = nx.Graph()
print(G.nodes(), G.edges())
[] []

Узлы

G.add_node("A")
print(G.nodes())
['A']
G.add_nodes_from(["B", "C"])
print(G.nodes())
print("Number of nodes in graph: ", G.number_of_nodes())
['A', 'B', 'C']
Number of nodes in graph:  3

Ребра

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

G.clear()  # First we clear the graph so we can start fresh
G.add_nodes_from(["A", "B", "C"])
G.add_edge("A", "B", weight=5)
G.add_edge("B", "C", weight=7)
G.add_edge("C", "A", weight=2)
print(G.nodes(), G.edges())
['A', 'B', 'C'] [('A', 'B'), ('A', 'C'), ('B', 'C')]

Веселая часть – Рисование вашего графика

Теперь мы можем нарисовать наш график. Они говорят, что картина стоит тысячи слов, и я согласен. Python делает эту супер легко для нас только с несколькими строками кода.

%matplotlib inline
import matplotlib.pyplot as plt

pos = nx.spring_layout(G)
weights = nx.get_edge_attributes(G, "weight")
nx.draw_networkx(G, pos, with_labels=True)
nx.draw_networkx_edge_labels(G, pos, edge_labels=weights)

plt.title("Basic Graphs with Networkx")
plt.gcf().canvas.set_window_title("")
plt.show()

Я для одного я довольно впечатлен ettewxx упаковка. Эта статья охватывает только самые основы, но уже мы нарисовали взвешенные графики и научились добавлять узлы и края к существующему графику, используя ettewxx мощная функциональность.

Вот полный список для этого примера для вашего удобства:

import matplotlib.pyplot as plt
import networkx as nx
import numpy as np


G = nx.Graph()  # Create empty graph

G.add_nodes_from(["A", "B", "C"])  # Add nodes

# Add edges
G.add_edge("A", "B", weight=5)
G.add_edge("B", "C", weight=7)
G.add_edge("C", "A", weight=2)

# Create drawing
pos = nx.spring_layout(G)  # List of positions of nodes
weights = nx.get_edge_attributes(G, "weight") # List of weights
nx.draw_networkx(G, pos, with_labels=True)
nx.draw_networkx_edge_labels(G, pos, edge_labels=weights)

plt.title("Basic Graphs with Networkx")
plt.gcf().canvas.set_window_title("")  # Hide window title

# Display Graph
plt.show()