1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
// Copyright ©2019 The Gonum Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file
package layout_test
import (
// "fmt"
// "image/color"
// "log"
// "math"
"gonum.org/v1/gonum/graph/layout"
"gonum.org/v1/gonum/graph/simple"
// "gonum.org/v1/plot"
// current gonum.org/v1/plot does not provide .../font
// "gonum.org/v1/plot/font"
// "gonum.org/v1/plot/plotter"
// "gonum.org/v1/plot/vg"
// "gonum.org/v1/plot/vg/draw"
)
func ExampleEadesR2() {
// Make a simple graph and render it as a PNG
// with the EadesR2 force-directed layout.
g := simple.NewUndirectedGraph()
const n = 6
for i := 0; i < n; i++ {
for j := i + 1; j < n; j++ {
g.SetEdge(g.NewEdge(simple.Node(i), simple.Node(j)))
}
}
// Use the Eades layout algorithm with reasonable defaults.
eades := layout.EadesR2{Repulsion: 1, Rate: 0.05, Updates: 30, Theta: 0.2}
// Make a layout optimizer with the target graph and update function.
optimizer := layout.NewOptimizerR2(g, eades.Update)
// Perform layout optimization.
for optimizer.Update() {
}
}
// render implements the plot.Plotter interface for graphs.
type render struct {
layout.GraphR2
}
// nodeGlyph is a glyph that draws a filled circle.
type nodeGlyph struct{}
|