Skip to content

Latest commit

 

History

65 提交

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

仓库 files navigation

DotNetGraph

Logo

Create GraphViz DOT graph with dotnet (compatible with .NET Standard 2.0 and higher).

Current stable version: #

Latest version: #

Usage

Create a graph (DotGraph)

var graph = new DotGraph().WithIdentifier("MyGraph");

var directedGraph = new DotGraph().WithIdentifier("MyDirectedGraph").Directed();

Create and add a node (DotNode)

var myNode = new DotNode()
    .WithIdentifier("MyNode")
    .WithShape(DotNodeShape.Ellipse)
    .WithLabel("My node!")
    .WithFillColor(DotColor.Coral)
    .WithFontColor(DotColor.Black)
    .WithStyle(DotNodeStyle.Dotted)
    .WithWidth(0.5)
    .WithHeight(0.5)
    .WithPenWidth(1.5);

// Add the node to the graph
graph.Add(myNode);

Create and add an edge (DotEdge)

// Create an edge with identifiers
var myEdge = new DotEdge().From("Node1").To("Node2");

// Or with nodes and attributes
var myEdge = new DotEdge()
    .From(node1)
    .To(node2)
    .WithArrowHead(DotEdgeArrowType.Box)
    .WithArrowTail(DotEdgeArrowType.Diamond)
    .WithColor(DotColor.Red)
    .WithFontColor(DotColor.Black)
    .WithLabel("My edge!")
    .WithStyle(DotEdgeStyle.Dashed)
    .WithPenWidth(1.5);

// Add the edge to the graph
graph.Add(myEdge);

Create a subgraph / cluster

// Subgraph identifier need to start with "cluster" to be identified as a cluster
var mySubgraph = new DotSubgraph().WithIdentifier("cluster_0");

// Create a subgraph with attributes (only used for cluster)
var mySubgraph2 = new DotSubgraph()
    .WithIdentifier("cluster_1")
    .WithColor(DotColor.Red)
    .WithStyle(DotSubGraphStyle.Dashed)
    .WithLabel("My subgraph!");

// Add node, edge, subgraph
subGraph.Add(myNode);
subGraph.Add(myEdge);
subGraph.Add(mySubgraph2);

// Add subgraph to main graph
graph.Add(mySubgraph);

Compile to DOT format

await using var writer = new StringWriter();
var context = new CompilationContext(writer, new CompilationOptions());
await graph.CompileAsync(context);

var result = writer.GetStringBuilder().ToString();

// Save it to a file
File.WriteAllText("graph.dot", result);

Credits

Logo: https://www.flaticon.com/free-icon/flow-chart_4411911

关于

Create GraphViz DOT graph with .NET / C#

Topics

Resources

Stars

114 stars

关注者

8 watching

复刻s

发布

Used by

贡献者

Languages