84 lines
2.1 KiB
Go
84 lines
2.1 KiB
Go
package barchart
|
|
|
|
//
|
|
//import (
|
|
// "fmt"
|
|
// "image"
|
|
//)
|
|
//
|
|
//type BarChart struct {
|
|
// Block
|
|
// BarColors []Color
|
|
// LabelStyles []Style
|
|
// NumStyles []Style // only Fg and Modifier are used
|
|
// NumFmt func(float64) string
|
|
// Data []float64
|
|
// Labels []string
|
|
// BarWidth int
|
|
// BarGap int
|
|
// MaxVal float64
|
|
//}
|
|
//
|
|
//func NewBarChart() *BarChart {
|
|
// return &BarChart{
|
|
// Block: *NewBlock(),
|
|
// BarColors: Theme.BarChart.Bars,
|
|
// NumStyles: Theme.BarChart.Nums,
|
|
// LabelStyles: Theme.BarChart.Labels,
|
|
// NumFmt: func(n float64) string { return fmt.Sprint(n) },
|
|
// BarGap: 1,
|
|
// BarWidth: 3,
|
|
// }
|
|
//}
|
|
//
|
|
//func (self *BarChart) Draw(buf *Buffer) {
|
|
// self.Block.Draw(buf)
|
|
//
|
|
// maxVal := self.MaxVal
|
|
// if maxVal == 0 {
|
|
// maxVal, _ = GetMaxFloat64FromSlice(self.Data)
|
|
// }
|
|
//
|
|
// barXCoordinate := self.Inner.Min.X
|
|
//
|
|
// for i, data := range self.Data {
|
|
// // draw bar
|
|
// height := int((data / maxVal) * float64(self.Inner.Dy()-1))
|
|
// for x := barXCoordinate; x < MinInt(barXCoordinate+self.BarWidth, self.Inner.Max.X); x++ {
|
|
// for y := self.Inner.Max.Y - 2; y > (self.Inner.Max.Y-2)-height; y-- {
|
|
// c := NewCell(' ', NewStyle(ColorClear, SelectColor(self.BarColors, i)))
|
|
// buf.SetCell(c, image.Pt(x, y))
|
|
// }
|
|
// }
|
|
//
|
|
// // draw label
|
|
// if i < len(self.Labels) {
|
|
// labelXCoordinate := barXCoordinate +
|
|
// int((float64(self.BarWidth) / 2)) -
|
|
// int((float64(rw.StringWidth(self.Labels[i])) / 2))
|
|
// buf.SetString(
|
|
// self.Labels[i],
|
|
// SelectStyle(self.LabelStyles, i),
|
|
// image.Pt(labelXCoordinate, self.Inner.Max.Y-1),
|
|
// )
|
|
// }
|
|
//
|
|
// // draw number
|
|
// numberXCoordinate := barXCoordinate + int((float64(self.BarWidth) / 2))
|
|
// if numberXCoordinate <= self.Inner.Max.X {
|
|
// buf.SetString(
|
|
// self.NumFmt(data),
|
|
// NewStyle(
|
|
// SelectStyle(self.NumStyles, i+1).Fg,
|
|
// SelectColor(self.BarColors, i),
|
|
// SelectStyle(self.NumStyles, i+1).Modifier,
|
|
// ),
|
|
// image.Pt(numberXCoordinate, self.Inner.Max.Y-2),
|
|
// )
|
|
// }
|
|
//
|
|
// barXCoordinate += (self.BarWidth + self.BarGap)
|
|
// }
|
|
//}
|
|
//
|