...

Source file src/gonum.org/v1/plot/plotter/heat_test.go

Documentation: gonum.org/v1/plot/plotter

     1  // Copyright ©2015 The Gonum Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package plotter_test
     6  
     7  import (
     8  	"fmt"
     9  	"math"
    10  	"testing"
    11  
    12  	"gonum.org/v1/gonum/mat"
    13  	"gonum.org/v1/plot"
    14  	"gonum.org/v1/plot/cmpimg"
    15  	"gonum.org/v1/plot/palette"
    16  	"gonum.org/v1/plot/plotter"
    17  	"gonum.org/v1/plot/vg/draw"
    18  	"gonum.org/v1/plot/vg/vgimg"
    19  )
    20  
    21  type offsetUnitGrid struct {
    22  	XOffset, YOffset float64
    23  
    24  	Data mat.Matrix
    25  }
    26  
    27  func (g offsetUnitGrid) Dims() (c, r int)   { r, c = g.Data.Dims(); return c, r }
    28  func (g offsetUnitGrid) Z(c, r int) float64 { return g.Data.At(r, c) }
    29  func (g offsetUnitGrid) X(c int) float64 {
    30  	_, n := g.Data.Dims()
    31  	if c < 0 || c >= n {
    32  		panic("column index out of range")
    33  	}
    34  	return float64(c) + g.XOffset
    35  }
    36  func (g offsetUnitGrid) Y(r int) float64 {
    37  	m, _ := g.Data.Dims()
    38  	if r < 0 || r >= m {
    39  		panic("row index out of range")
    40  	}
    41  	return float64(r) + g.YOffset
    42  }
    43  
    44  type integerTicks struct{}
    45  
    46  func (integerTicks) Ticks(min, max float64) []plot.Tick {
    47  	var t []plot.Tick
    48  	for i := math.Trunc(min); i <= max; i++ {
    49  		t = append(t, plot.Tick{Value: i, Label: fmt.Sprint(i)})
    50  	}
    51  	return t
    52  }
    53  
    54  func TestHeatMap(t *testing.T) {
    55  	cmpimg.CheckPlot(ExampleHeatMap, t, "heatMap.png")
    56  }
    57  
    58  func TestHeatMapDims(t *testing.T) {
    59  	pal := palette.Heat(12, 1)
    60  
    61  	for _, test := range []struct {
    62  		rows int
    63  		cols int
    64  	}{
    65  		{rows: 1, cols: 2},
    66  		{rows: 2, cols: 1},
    67  		{rows: 2, cols: 2},
    68  	} {
    69  		func() {
    70  			defer func() {
    71  				r := recover()
    72  				if r != nil {
    73  					t.Errorf("unexpected panic for rows=%d cols=%d: %v", test.rows, test.cols, r)
    74  				}
    75  			}()
    76  
    77  			m := offsetUnitGrid{Data: mat.NewDense(test.rows, test.cols, nil)}
    78  			h := plotter.NewHeatMap(m, pal)
    79  
    80  			p := plot.New()
    81  			p.Add(h)
    82  
    83  			img := vgimg.New(250, 175)
    84  			dc := draw.New(img)
    85  
    86  			p.Draw(dc)
    87  		}()
    88  	}
    89  }
    90  
    91  func TestRasterHeatMap(t *testing.T) {
    92  	cmpimg.CheckPlot(ExampleHeatMap_rasterized, t, "rasterHeatMap.png")
    93  }
    94  

View as plain text