Tutorial: Analyse a Network Graph
Nodes, links, layouts and graph algorithms
You will build: a small network graph and run graph analysis on it. Time: about 15 minutes. Prerequisites: Beep.Skia and Beep.Skia.Network.
1. Nodes and links
using Beep.Skia;
using Beep.Skia.Network;
var manager = new DrawingManager();
var a = new NetworkNode { X = 80, Y = 80, Width = 60, Height = 60, Label = "A" };
var b = new NetworkNode { X = 260, Y = 60, Width = 60, Height = 60, Label = "B" };
var c = new NetworkNode { X = 260, Y = 220, Width = 60, Height = 60, Label = "C" };
var d = new NetworkNode { X = 440, Y = 140, Width = 60, Height = 60, Label = "D" };
foreach (var node in new SkiaComponent[] { a, b, c, d })
manager.AddComponent(node);
manager.ConnectComponents(a, b);
manager.ConnectComponents(a, c);
manager.ConnectComponents(b, d);
manager.ConnectComponents(c, d);
2. Auto-layout
var layout = new ForceDirectedLayout();
layout.Arrange(manager.GetComponents(), manager.GetLines());
manager.RequestRedraw();
3. Analyse the graph
var graph = new NetworkGraph();
// Add nodes/links to the graph (or import from the canvas), then:
// new PathFinder().ShortestPath(graph, "A", "D")
// new CentralityMeasure().Degree(graph) / Betweenness(graph) / PageRank(graph)
// new CommunityDetector().Louvain(graph)
// new NetworkAnalyzer().Analyze(graph) -> density, diameter, clustering
var analysis = new NetworkAnalyzer().Analyze(graph);
Console.WriteLine(analysis);
Next steps
- Network family — layouts, filters and export panels
- Graph algorithms — the full analysis surface