Graphviz (dot) を用いた ExprGraph の描画

Gorgonia の encoding パッケージには、ExprGraphdot language にマーシャリングする関数が含まれています。

これにより graphviz プログラムを用いてグラフの png または svg バージョンを生成することができます。

簡単な方法:

package main

import (
        "fmt"
        "log"

        "gorgonia.org/gorgonia"
        "gorgonia.org/gorgonia/encoding/dot"
)

func main() {
        g := gorgonia.NewGraph()

        var x, y *gorgonia.Node

        // define the expression
        x = gorgonia.NewScalar(g, gorgonia.Float64, gorgonia.WithName("x"))
        y = gorgonia.NewScalar(g, gorgonia.Float64, gorgonia.WithName("y"))
        gorgonia.Add(x, y)
        b, err := dot.Marshal(g)
        if err != nil {
                log.Fatal(err)
        }
        fmt.Println(string(b))
}

このプログラムを実行して出力を dot プロセスに送り込むと画像が生成されます。

例:

$ go run main.go | dot -Tsvg > dot-example.svg

この画像が出力されます:

graph