DataRange implements the plot.DataRanger interface.
()
| 155 | |
| 156 | // DataRange implements the plot.DataRanger interface. |
| 157 | func (b *BarChart) DataRange() (xmin, xmax, ymin, ymax float64) { |
| 158 | catMin := b.XMin |
| 159 | catMax := catMin + float64(len(b.Values)-1) |
| 160 | |
| 161 | valMin := math.Inf(1) |
| 162 | valMax := math.Inf(-1) |
| 163 | for i, val := range b.Values { |
| 164 | valBot := b.stackedOn.BarHeight(i) |
| 165 | valTop := valBot + val |
| 166 | valMin = math.Min(valMin, math.Min(valBot, valTop)) |
| 167 | valMax = math.Max(valMax, math.Max(valBot, valTop)) |
| 168 | } |
| 169 | if !b.Horizontal { |
| 170 | return catMin, catMax, valMin, valMax |
| 171 | } |
| 172 | return valMin, valMax, catMin, catMax |
| 173 | } |
| 174 | |
| 175 | // GlyphBoxes implements the GlyphBoxer interface. |
| 176 | func (b *BarChart) GlyphBoxes(plt *plot.Plot) []plot.GlyphBox { |