Пример #1
0
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)
		}
	}
}
Пример #2
0
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)
			}
		}
	}
}