Home

Awesome

Go Report Card CircleCI codebeat badge

dotgraph

dotgraph is a package that lets you create and render graphviz dot graphs.

Installation

go get github.com/windler/dotgraph/graph
go get github.com/windler/dotgraph/renderer

If you want to render graphs make sure you have graphviz installed.

Usage

Creating a new graph

graph := graph.New("my_graph")

Adding nodes

graph.AddNode("first node")
graph.AddNode("second node")
graph.AddNode("third node")

Adding directed edges

graph.AddDirectedEdge("first node", "second node", "edge label")

Assiging dot graph attributes

You can apply any dot attributes.

Graph attributes

graph.SetGraphOptions(dotgraph.DotGraphOptions{
    "bgcolor": "#333333",
})

Global node attributes

graph.SetNodeGraphOptions(dotgraph.DotGraphOptions{
    "fillcolor": "#336699",
    "style":     "filled",
    "fontcolor": "white",
    "fontname":  "Courier",
    "shape":     "rectangle",
})

Node attributes for nodes

If you want to assign attributes for nodes matching a pattern you can do the following:

graph.AddNodeGraphPatternOptions("first", dotgraph.DotGraphOptions{
    "shape": "oval",
})

Global edge attributes

graph.SetEdgeGraphOptions(dotgraph.DotGraphOptions{
    "arrowhead": "open",
    "color":     "white",
    "fontcolor": "white",
    "splines":   "curved",
})

Edge attributes

If you want to assign attributes for an edge that references a certain node you can do the following:

graph.AddEdgeGraphPatternOptions("first", dotgraph.DotGraphOptions{
    "color": "black",
})

Render a graph

r := &renderer.PNGRenderer{
   OutputFile: "/tmp/my_graph.png",
}

r.Render(graph.String())