From b3dc3fef3c79666d934f085edf2b920483c17ad9 Mon Sep 17 00:00:00 2001 From: Chris Redford Date: Mon, 17 Apr 2017 16:21:02 -0700 Subject: [PATCH] Separation of DotColorProvider and ColorProvider Interfaces (#34) * fully functioning Viridis * pure functions --- _examples/basic/main.go | 4 ++-- _examples/scatter/main.go | 8 +++++++- _examples/scatter/output.png | Bin 12268 -> 27271 bytes jet.go | 6 +----- style.go | 2 +- value_provider.go | 7 +++++-- viridis.go | 4 ++-- 7 files changed, 18 insertions(+), 13 deletions(-) diff --git a/_examples/basic/main.go b/_examples/basic/main.go index 215c4e4..1fd9d38 100644 --- a/_examples/basic/main.go +++ b/_examples/basic/main.go @@ -26,8 +26,8 @@ func drawChartWide(res http.ResponseWriter, req *http.Request) { Width: 1920, //this overrides the default. Series: []chart.Series{ chart.ContinuousSeries{ - XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0}, - YValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0}, + XValues: []float64{1.0, 2.0, 3.0, 4.0}, + YValues: []float64{1.0, 2.0, 3.0, 4.0}, }, }, } diff --git a/_examples/scatter/main.go b/_examples/scatter/main.go index 06b89e0..de8ef3a 100644 --- a/_examples/scatter/main.go +++ b/_examples/scatter/main.go @@ -7,9 +7,15 @@ import ( _ "net/http/pprof" "github.com/wcharczuk/go-chart" + "github.com/wcharczuk/go-chart/drawing" ) func drawChart(res http.ResponseWriter, req *http.Request) { + + viridisByY := func(xr, yr chart.Range, x, y float64) drawing.Color { + return chart.Viridis(y, yr.GetMin(), yr.GetMax()) + } + graph := chart.Chart{ Series: []chart.Series{ chart.ContinuousSeries{ @@ -17,7 +23,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) { Show: true, StrokeWidth: chart.Disabled, DotWidth: 5, - DotColorProvider: chart.Jet, + DotColorProvider: viridisByY, }, XValues: chart.Sequence.Random(128, 1024), YValues: chart.Sequence.Random(128, 1024), diff --git a/_examples/scatter/output.png b/_examples/scatter/output.png index 535e4791d42d99bb3f390736b6ddd23ea49a3eb2..1f16d446084b3837f132f4a1b04e2881bbbc15cc 100644 GIT binary patch literal 27271 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 literal 12268 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