Визуализация данных играет решающую роль в понимании сложных сетей и лежащих в их основе закономерностей. NetworkX и Plotly — две мощные библиотеки Python, которые в сочетании предоставляют обширный набор инструментов для создания визуально потрясающих и интерактивных визуализаций сетей. В этой статье мы рассмотрим несколько методов и примеров кода с использованием NetworkX и Plotly, которые помогут вам раскрыть весь потенциал визуализации сети в Python.
- Создание сетевого графика.
Для начала импортируем NetworkX и создадим базовый сетевой график.
import networkx as nx
# Create an empty graph
G = nx.Graph()
# Add nodes
G.add_node('A')
G.add_node('B')
G.add_node('C')
# Add edges
G.add_edge('A', 'B')
G.add_edge('B', 'C')
- Визуализация сетевого графика.
Теперь, когда у нас есть сетевой график, давайте визуализируем его с помощью Plotly.
import plotly.graph_objects as go
# Create a Plotly figure
fig = go.Figure()
# Add edges as lines
for edge in G.edges():
x0, y0 = G.nodes[edge[0]]['pos']
x1, y1 = G.nodes[edge[1]]['pos']
fig.add_trace(go.Scatter(x=[x0, x1], y=[y0, y1], mode='lines'))
# Add nodes as scatter points
for node in G.nodes():
x, y = G.nodes[node]['pos']
fig.add_trace(go.Scatter(x=[x], y=[y], mode='markers'))
# Show the figure
fig.show()
- Настройка атрибутов узлов и ребер.
NetworkX позволяет нам назначать различные атрибуты узлам и ребрам. Мы можем использовать эти атрибуты для настройки визуализации нашей сети.
# Adding attributes to nodes and edges
G.nodes['A']['color'] = 'red'
G.nodes['B']['color'] = 'blue'
G.nodes['C']['color'] = 'green'
G.edges[('A', 'B')]['weight'] = 2
G.edges[('B', 'C')]['weight'] = 3
# Customizing visualization based on attributes
node_colors = [G.nodes[node]['color'] for node in G.nodes()]
edge_weights = [G.edges[edge]['weight'] for edge in G.edges()]
fig.data[0].marker.color = node_colors
fig.data[0].marker.size = 10
fig.data[0].line.width = edge_weights
fig.show()
- Применение алгоритмов макета.
NetworkX предоставляет различные алгоритмы макета для визуально привлекательного расположения сетевого графика. Давайте применим алгоритм пружинного макета.
# Applying layout algorithm
pos = nx.spring_layout(G)
nx.set_node_attributes(G, pos, 'pos')
# Update visualization with new positions
for edge in G.edges():
x0, y0 = G.nodes[edge[0]]['pos']
x1, y1 = G.nodes[edge[1]]['pos']
fig.add_trace(go.Scatter(x=[x0, x1], y=[y0, y1], mode='lines'))
for node in G.nodes():
x, y = G.nodes[node]['pos']
fig.add_trace(go.Scatter(x=[x], y=[y], mode='markers'))
fig.show()
В этой статье мы рассмотрели различные методы и примеры кода с использованием NetworkX и Plotly для визуализации сети на Python. Мы научились создавать сетевые графы, настраивать атрибуты узлов и ребер, а также применять алгоритмы компоновки для улучшения визуального представления наших сетей. Используя возможности этих библиотек, вы теперь можете создавать потрясающие интерактивные визуализации сетей, чтобы получать ценную информацию из своих данных.