diff options
Diffstat (limited to 'cmd/jp/bar.go')
-rw-r--r-- | cmd/jp/bar.go | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/cmd/jp/bar.go b/cmd/jp/bar.go index e1a622b..cfc39c2 100644 --- a/cmd/jp/bar.go +++ b/cmd/jp/bar.go @@ -2,37 +2,38 @@ package main import ( "fmt" + "log" "reflect" - "github.com/sgreben/jp/pkg/jp" - "github.com/sgreben/jp/pkg/jp/primitives" + "github.com/sgreben/jp/pkg/data" + "github.com/sgreben/jp/pkg/draw" + "github.com/sgreben/jp/pkg/plot" ) -func barPlotData(xvv, yvv [][]reflect.Value) (x []string, y []float64) { - for _, xv := range xvv { - for i := range xv { - if xv[i].IsValid() && xv[i].CanInterface() { - x = append(x, fmt.Sprint(xv[i].Interface())) - } +func barPlotData(xv, yv []reflect.Value) (x []string, y []float64) { + for i := range xv { + if xv[i].IsValid() && xv[i].CanInterface() { + x = append(x, fmt.Sprint(xv[i].Interface())) } } - for _, yv := range yvv { - for i := range yv { - if yv[i].IsValid() && yv[i].CanInterface() { - yvi, ok := yv[i].Interface().(float64) - if ok { - y = append(y, yvi) - } + for i := range yv { + if yv[i].IsValid() && yv[i].CanInterface() { + yvi, ok := yv[i].Interface().(float64) + if ok { + y = append(y, yvi) } } } return } -func barPlot(xvv, yvv [][]reflect.Value, box primitives.Box) string { - groups, y := barPlotData(xvv, yvv) - chart := jp.NewBarChart(box.Width, box.Height) - data := new(jp.DataTable) +func barPlot(xv, yv []reflect.Value, c draw.Canvas) string { + groups, y := barPlotData(xv, yv) + chart := plot.NewBarChart(c) + data := new(data.Table) + if len(y) == 0 { + log.Fatal("no valid y values given") + } if len(groups) != len(y) { for i := range y { data.AddColumn(fmt.Sprint(i)) |