Better series palette.
authorTom Clegg <tom@tomclegg.ca>
Mon, 26 Oct 2020 00:14:25 +0000 (20:14 -0400)
committerTom Clegg <tom@tomclegg.ca>
Mon, 26 Oct 2020 00:14:25 +0000 (20:14 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@tomclegg.ca>

go.mod
go.sum
import.go

diff --git a/go.mod b/go.mod
index 890032ac3975313536c2be733468d32304ca8fff..ffbfc042c059c6c6ddfaa4668c049948de8bc9ae 100644 (file)
--- 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 c390d8ce57f259c0359b45e82fbb9bff27566ad6..f3617dfc0faf03420227ad2c77f723b859548e43 100644 (file)
--- 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=
index a43737232d06fb65816cb297f72e776b4d84de0f..4a820559733a9746e0224919f14ff3fff8d2255d 100644 (file)
--- 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