Dessiner le ExprGraph avec Graphviz (dot)

Le package encoding de Gorgonia contient une fonction permettant de déployer le ExprGraph en dot language.

Cela permet d’utiliser le programme graphviz pour générer des versions png ou svg du graphique.

Une manière simple de le faire :

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))
}

Lancer ce programme et mettre ce qu’il renvoie dans le dot process permet d’obtenir une image.

par exemple :

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

donne ce graphique :

graph