analyze: customize graph line colors

This commit is contained in:
Gyu-Ho Lee 2016-12-13 13:00:52 -08:00
parent 84ece6b1c5
commit 40b55b0600
No known key found for this signature in database
GPG Key ID: 1DDD39C7EB70C24C
1 changed files with 50 additions and 6 deletions

View File

@ -17,6 +17,7 @@ package analyze
import (
"bytes"
"fmt"
"image/color"
"os"
"path/filepath"
"strconv"
@ -428,8 +429,24 @@ func CommandFunc(cmd *cobra.Command, args []string) error {
pl.Y.Label.Text = pelem.YAxis
pl.Legend.Top = true
var args []interface{}
for _, line := range pelem.Lines {
// var args []interface{}
// for _, line := range pelem.Lines {
// col, err := fr.GetColumn(line.Column)
// if err != nil {
// return err
// }
// pt, err := points(col)
// if err != nil {
// return err
// }
// args = append(args, line.Legend, pt)
// }
// if err = plotutil.AddLines(pl, args...); err != nil {
// return err
// }
var ps []plot.Plotter
for j, line := range pelem.Lines {
col, err := fr.GetColumn(line.Column)
if err != nil {
return err
@ -438,12 +455,19 @@ func CommandFunc(cmd *cobra.Command, args []string) error {
if err != nil {
return err
}
args = append(args, line.Legend, pt)
}
if err = plotutil.AddLines(pl, args...); err != nil {
return err
l, err := plotter.NewLine(pt)
if err != nil {
return err
}
l.Color = getRGB(line.Legend, j)
l.Dashes = plotutil.Dashes(j)
ps = append(ps, l)
pl.Legend.Add(line.Legend, l)
}
pl.Add(ps...)
for _, outputPath := range pelem.OutputPathList {
if err = pl.Save(plotWidth, plotHeight, outputPath); err != nil {
return err
@ -521,3 +545,23 @@ func points(col dataframe.Column) (plotter.XYs, error) {
}
return pts, nil
}
func getRGB(legend string, i int) color.Color {
legend = strings.ToLower(strings.TrimSpace(legend))
if strings.HasPrefix(legend, "zk") || strings.HasPrefix(legend, "zookeeper") {
return color.RGBA{38, 169, 24, 255} // green
}
if strings.HasPrefix(legend, "zetcd") {
return color.RGBA{159, 102, 16, 255} // brown
}
if strings.HasPrefix(legend, "etcd") {
return color.RGBA{24, 90, 169, 255} // blue
}
if strings.HasPrefix(legend, "consul") {
return color.RGBA{198, 53, 53, 255} // red
}
if strings.HasPrefix(legend, "cetcd") {
return color.RGBA{116, 24, 169, 255} // purple
}
return plotutil.Color(i)
}