code: func NewGrid(x, y, w, h float64) (grid GridType) {
  	grid.x = x
  	grid.y = y
  	grid.w = w
  	grid.h = h
  	grid.TextSize = 7 // Points
  	grid.TickmarksExtentX(0, 1, 1)
  	grid.TickmarksExtentY(0, 1, 1)
  	grid.XLabelIn = false
  	grid.YLabelIn = false
  	grid.XLabelRotate = false
  	grid.XDiv = 10
  	grid.YDiv = 10
  	grid.ClrText = RGBAType{R: 0, G: 0, B: 0, Alpha: 1}
  	grid.ClrMain = RGBAType{R: 128, G: 160, B: 128, Alpha: 1}
  	grid.ClrSub = RGBAType{R: 192, G: 224, B: 192, Alpha: 1}
  	grid.WdMain = 0.1
  	grid.WdSub = 0.1
  	grid.YTickStr = defaultFormatter
  	grid.XTickStr = defaultFormatter
  	return
  }
docs: // NewGrid returns a variable of type GridType that is initialized to draw on a
  // rectangle of width w and height h with the upper left corner positioned at
  // point (x, y). The coordinates are in page units, that is, the same as those
  // specified in New().
  //
  // The returned variable is initialized with a very simple default tickmark
  // layout that ranges from 0 to 1 in both axes. Prior to calling Grid(), the
  // application may establish a more suitable tickmark layout by calling the
  // methods TickmarksContainX() and TickmarksContainY(). These methods bound the
  // data range with appropriate boundaries and divisions. Alternatively, if the
  // exact extent and divisions of the tickmark layout are known, the methods
  // TickmarksExtentX() and TickmarksExtentY may be called instead.