func (m *RGB) Raw(x, y int) []uint8 {
	i := (y+m.Y)*m.Stride + (x+m.X)*4
	return m.Pix[i : i+4]
}
Raw returns the raw values at the pixel, including alpha channel. It can
be mutated.
package draw
import (
	"bytes"
	"image"
)
type Canvas interface {
	Set(x, y int, c Color)
	Size() (w, h int)
}
type Column struct {
	X, W   int
	Data   []float64
	ObsSec float64
}
type Color struct {
	R, G, B uint8
}
type RGB struct {
	Pix    []uint8
	Stride int
	Width  int
	Height int
	X, Y   int
}
func NewRGB(w, h int) *RGB {
	return &RGB{
		Pix:    bytes.Repeat([]byte{255}, 4*w*h),
		Stride: 4 * w,
		Width:  w,
		Height: h,
	}
}
func (m *RGB) Size() (w, h int) {
	return m.Width, m.Height
}
func (m *RGB) Set(x, y int, c Color) {
	i := (y+m.Y)*m.Stride + (x+m.X)*4
	pix := m.Pix[i : i+4]
	pix[0] = c.R
	pix[1] = c.G
	pix[2] = c.B
	pix[3] = 255
}