...

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

Documentation: gonum.org/v1/plot/plotter

     1  // Copyright ©2016 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  	"image"
     9  	"image/color"
    10  	"image/png"
    11  	"log"
    12  	"os"
    13  
    14  	"gonum.org/v1/plot"
    15  	"gonum.org/v1/plot/plotter"
    16  	"gonum.org/v1/plot/vg"
    17  )
    18  
    19  // An example of embedding an image in a plot.
    20  func ExampleImage() {
    21  	p := plot.New()
    22  	p.Title.Text = "A Logo"
    23  
    24  	// load an image
    25  	f, err := os.Open("testdata/image_plot_input.png")
    26  	if err != nil {
    27  		log.Fatalf("error opening image file: %v\n", err)
    28  	}
    29  	defer f.Close()
    30  
    31  	img, err := png.Decode(f)
    32  	if err != nil {
    33  		log.Fatalf("error decoding image file: %v\n", err)
    34  	}
    35  
    36  	p.Add(plotter.NewImage(img, 100, 100, 200, 200))
    37  
    38  	const (
    39  		w = 5 * vg.Centimeter
    40  		h = 5 * vg.Centimeter
    41  	)
    42  
    43  	err = p.Save(w, h, "testdata/image_plot.png")
    44  	if err != nil {
    45  		log.Fatalf("error saving image plot: %v\n", err)
    46  	}
    47  }
    48  
    49  // An example of embedding an image in a plot with non-linear axes.
    50  func ExampleImage_log() {
    51  	p := plot.New()
    52  	p.Title.Text = "A Logo"
    53  
    54  	// load an image
    55  	f, err := os.Open("testdata/gopher.png")
    56  	if err != nil {
    57  		log.Fatalf("error opening image file: %v\n", err)
    58  	}
    59  	defer f.Close()
    60  
    61  	img, err := png.Decode(f)
    62  	if err != nil {
    63  		log.Fatalf("error decoding image file: %v\n", err)
    64  	}
    65  
    66  	p.Add(plotter.NewImage(img, 100, 100, 10000, 10000))
    67  
    68  	// Transform axes.
    69  	p.X.Scale = plot.LogScale{}
    70  	p.Y.Scale = plot.LogScale{}
    71  	p.X.Tick.Marker = plot.LogTicks{Prec: -1}
    72  	p.Y.Tick.Marker = plot.LogTicks{Prec: 3}
    73  
    74  	const (
    75  		w = 5 * vg.Centimeter
    76  		h = 5 * vg.Centimeter
    77  	)
    78  
    79  	err = p.Save(w, h, "testdata/image_plot_log.png")
    80  	if err != nil {
    81  		log.Fatalf("error saving image plot: %v\n", err)
    82  	}
    83  }
    84  
    85  // An example of embedding a uniform image in a plot.
    86  func ExampleImage_uniform() {
    87  	p := plot.New()
    88  	p.Title.Text = "Uniform image"
    89  
    90  	img := image.NewUniform(color.RGBA{R: 90, G: 155, B: 212, A: 255})
    91  	p.Add(plotter.NewImage(img, 100, 100, 10000, 10000))
    92  
    93  	const (
    94  		w = 5 * vg.Centimeter
    95  		h = 5 * vg.Centimeter
    96  	)
    97  
    98  	err := p.Save(w, h, "testdata/image_plot_uniform.png")
    99  	if err != nil {
   100  		log.Fatalf("error saving image plot: %v\n", err)
   101  	}
   102  }
   103  

View as plain text