From: Tom Clegg Date: Mon, 26 Oct 2020 00:14:25 +0000 (-0400) Subject: Better series palette. X-Git-Url: https://git.arvados.org/lightning.git/commitdiff_plain/277e7b02ae36ef1f3ebcd0b42f2b13f10909727f Better series palette. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- diff --git a/go.mod b/go.mod index 890032ac39..ffbfc042c0 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,7 @@ require ( github.com/james-bowman/nlp v0.0.0-20200417075118-1e2772e0e1e5 github.com/james-bowman/sparse v0.0.0-20200514124614-ae250424e52d // indirect github.com/kshedden/gonpy v0.0.0-20190510000443-66c21fac4672 + github.com/lucasb-eyer/go-colorful v1.0.3 github.com/mattn/go-isatty v0.0.12 github.com/prometheus/client_golang v1.6.0 // indirect github.com/prometheus/common v0.10.0 // indirect diff --git a/go.sum b/go.sum index c390d8ce57..f3617dfc0f 100644 --- a/go.sum +++ b/go.sum @@ -129,6 +129,8 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kshedden/gonpy v0.0.0-20190510000443-66c21fac4672 h1:LQLnybCU54zB8Gj8c1DPeZEheIAn3eZ8Cc9fYqM4ac8= github.com/kshedden/gonpy v0.0.0-20190510000443-66c21fac4672/go.mod h1:+uEXxXG0RlfBPqG1tq5QN/F2jRlcuY0dExSONLpEwcA= github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac= +github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/marstr/guid v1.1.1-0.20170427235115-8bdf7d1a087c/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= @@ -271,6 +273,7 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.1 h1:wGtP3yGpc5mCLOLeTeBdjeui9oZSz5De0eOjMLC/QuQ= gonum.org/v1/gonum v0.8.1/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b h1:Qh4dB5D/WpoUUp3lSod7qgoyEHbDGPUWjIbnqdqqe1k= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= @@ -315,4 +318,5 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= rsc.io/getopt v0.0.0-20170811000552-20be20937449/go.mod h1:dhCdeqAxkyt5u3/sKRkUXuHaMXUu1Pt13GTQAM2xnig= +rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/import.go b/import.go index a43737232d..4a82055973 100644 --- a/import.go +++ b/import.go @@ -8,7 +8,6 @@ import ( "errors" "flag" "fmt" - "image/color/palette" "io" "net/http" _ "net/http/pprof" @@ -24,6 +23,7 @@ import ( "time" "git.arvados.org/arvados.git/sdk/go/arvados" + "github.com/lucasb-eyer/go-colorful" log "github.com/sirupsen/logrus" "gonum.org/v1/plot" "gonum.org/v1/plot/plotter" @@ -538,13 +538,22 @@ func (cmd *importstatsplot) Plot(stdin io.Reader, stdout io.Writer) error { }) } + labels := []string{} + for label := range data { + labels = append(labels, label) + } + sort.Strings(labels) + palette, err := colorful.SoftPalette(len(labels)) + if err != nil { + return err + } nextInPalette := 0 - for label, xys := range data { - s, err := plotter.NewScatter(xys) + for idx, label := range labels { + s, err := plotter.NewScatter(data[label]) if err != nil { return err } - s.GlyphStyle.Color = palette.Plan9[nextInPalette%len(palette.Plan9)] + s.GlyphStyle.Color = palette[idx] s.GlyphStyle.Radius = vg.Millimeter / 2 s.GlyphStyle.Shape = draw.CrossGlyph{} nextInPalette += 7