Models
基于简单模型加载一些图形
from IPython.display import SVG
import numpy as np
from sknetwork.data import erdos_renyi, block_model, linear_graph, cyclic_graph, linear_digraph, cyclic_digraph, grid, albert_barabasi, watts_strogatz
from sknetwork.visualization import svg_graph
Erdos-Renyi model
adjacency = erdos_renyi(20, 0.2)
image = svg_graph(adjacency)
SVG(image)
Stochastic block model
graph = block_model([20, 25, 30], p_in=[0.5, 0.4, 0.3], p_out=0.02, metadata=True)
adjacency = graph.adjacency
labels = graph.labels
image = svg_graph(adjacency, labels=labels)
SVG(image)
Linear graph
graph = linear_graph(8, metadata=True)
adjacency = graph.adjacency
position = graph.position
image = svg_graph(adjacency, position)
SVG(image)
# adjacency matrix only
graph = linear_graph(8)
# directed
graph = linear_digraph(8, metadata=True)
adjacency = graph.adjacency
position = graph.position
image = svg_graph(adjacency, position)
SVG(image)
Cyclic graph
graph = cyclic_graph(8, metadata=True)
adjacency = graph.adjacency
position = graph.position
image = svg_graph(adjacency, position, width=200, height=200)
SVG(image)
Grid
graph = grid(6, 4, metadata=True)
adjacency = graph.adjacency
position = graph.position
image = svg_graph(adjacency, position)
SVG(image)
Albert-Barabasi model
adjacency = albert_barabasi(n=100, degree=3)
image = svg_graph(adjacency, labels={i:0 for i in range(3)}, display_edge_weight=True, node_order=np.flip(np.arange(100)))
SVG(image)
Watts-Strogatz model
adjacency = watts_strogatz(n=100, degree=6, prob=0.2)
image = svg_graph(adjacency, display_node_weight=True, node_size_max=10)
SVG(image)