func (g *TextGraphics) YAxis(yrange chart.Range, x, x1 int) { label := yrange.Label mirror := yrange.TicSetting.Mirror ya, ye := yrange.Data2Screen(yrange.Min), yrange.Data2Screen(yrange.Max) for sy := min(ya, ye); sy <= max(ya, ye); sy++ { g.tb.Put(x, sy, '|') if mirror >= 1 { g.tb.Put(x1, sy, '|') } } if yrange.ShowZero && yrange.Min < 0 && yrange.Max > 0 { z := yrange.Data2Screen(0) for xx := x + 1; xx < x1; xx += 2 { g.tb.Put(xx, z, '-') } } if label != "" { g.tb.Text(1, (ya+ye)/2, label, 3) } for _, tic := range yrange.Tics { y := yrange.Data2Screen(tic.Pos) ly := yrange.Data2Screen(tic.LabelPos) if yrange.Time { g.tb.Put(x, y, '+') if mirror >= 2 { g.tb.Put(x1, y, '+') } if tic.Align == 0 { // centered tic g.tb.Put(x-1, y, '-') g.tb.Put(x-2, y, '-') } g.tb.Text(x, ly, tic.Label+" ", 1) } else { g.tb.Put(x, y, '+') if mirror >= 2 { g.tb.Put(x1, y, '+') } g.tb.Text(x-2, ly, tic.Label, 1) } } }
func (g *TextGraphics) XAxis(xrange chart.Range, y, y1 int) { mirror := xrange.TicSetting.Mirror xa, xe := xrange.Data2Screen(xrange.Min), xrange.Data2Screen(xrange.Max) for sx := xa; sx <= xe; sx++ { g.tb.Put(sx, y, '-') if mirror >= 1 { g.tb.Put(sx, y1, '-') } } if xrange.ShowZero && xrange.Min < 0 && xrange.Max > 0 { z := xrange.Data2Screen(0) for yy := y - 1; yy > y1+1; yy-- { g.tb.Put(z, yy, ':') } } if xrange.Label != "" { yy := y + 1 if !xrange.TicSetting.Hide { yy++ } g.tb.Text((xa+xe)/2, yy, xrange.Label, 0) } for _, tic := range xrange.Tics { var x int if !math.IsNaN(tic.Pos) { x = xrange.Data2Screen(tic.Pos) } else { x = -1 } lx := xrange.Data2Screen(tic.LabelPos) if xrange.Time { if x != -1 { g.tb.Put(x, y, '|') if mirror >= 2 { g.tb.Put(x, y1, '|') } g.tb.Put(x, y+1, '|') } if tic.Align == -1 { g.tb.Text(lx+1, y+1, tic.Label, -1) } else { g.tb.Text(lx, y+1, tic.Label, 0) } } else { if x != -1 { g.tb.Put(x, y, '+') if mirror >= 2 { g.tb.Put(x, y1, '+') } } g.tb.Text(lx, y+1, tic.Label, 0) } if xrange.ShowLimits { if xrange.Time { g.tb.Text(xa, y+2, xrange.TMin.Format("2006-01-02 15:04:05"), -1) g.tb.Text(xe, y+2, xrange.TMax.Format("2006-01-02 15:04:05"), 1) } else { g.tb.Text(xa, y+2, fmt.Sprintf("%g", xrange.Min), -1) g.tb.Text(xe, y+2, fmt.Sprintf("%g", xrange.Max), 1) } } } }