Separation of DotColorProvider and ColorProvider Interfaces (#34)
* fully functioning Viridis * pure functions
This commit is contained in:
parent
e53554fb04
commit
b3dc3fef3c
7 changed files with 18 additions and 13 deletions
|
@ -26,8 +26,8 @@ func drawChartWide(res http.ResponseWriter, req *http.Request) {
|
||||||
Width: 1920, //this overrides the default.
|
Width: 1920, //this overrides the default.
|
||||||
Series: []chart.Series{
|
Series: []chart.Series{
|
||||||
chart.ContinuousSeries{
|
chart.ContinuousSeries{
|
||||||
XValues: []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, 5.0},
|
YValues: []float64{1.0, 2.0, 3.0, 4.0},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,15 @@ import (
|
||||||
_ "net/http/pprof"
|
_ "net/http/pprof"
|
||||||
|
|
||||||
"github.com/wcharczuk/go-chart"
|
"github.com/wcharczuk/go-chart"
|
||||||
|
"github.com/wcharczuk/go-chart/drawing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func drawChart(res http.ResponseWriter, req *http.Request) {
|
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{
|
graph := chart.Chart{
|
||||||
Series: []chart.Series{
|
Series: []chart.Series{
|
||||||
chart.ContinuousSeries{
|
chart.ContinuousSeries{
|
||||||
|
@ -17,7 +23,7 @@ func drawChart(res http.ResponseWriter, req *http.Request) {
|
||||||
Show: true,
|
Show: true,
|
||||||
StrokeWidth: chart.Disabled,
|
StrokeWidth: chart.Disabled,
|
||||||
DotWidth: 5,
|
DotWidth: 5,
|
||||||
DotColorProvider: chart.Jet,
|
DotColorProvider: viridisByY,
|
||||||
},
|
},
|
||||||
XValues: chart.Sequence.Random(128, 1024),
|
XValues: chart.Sequence.Random(128, 1024),
|
||||||
YValues: chart.Sequence.Random(128, 1024),
|
YValues: chart.Sequence.Random(128, 1024),
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 27 KiB |
6
jet.go
6
jet.go
|
@ -3,11 +3,7 @@ package chart
|
||||||
import "github.com/wcharczuk/go-chart/drawing"
|
import "github.com/wcharczuk/go-chart/drawing"
|
||||||
|
|
||||||
// Jet is a color map provider based on matlab's jet color map.
|
// Jet is a color map provider based on matlab's jet color map.
|
||||||
func Jet(xr, yr Range, x, y float64) drawing.Color {
|
func Jet(v, vmin, vmax float64) drawing.Color {
|
||||||
return getJetColour(y, yr.GetMin(), yr.GetMax())
|
|
||||||
}
|
|
||||||
|
|
||||||
func getJetColour(v, vmin, vmax float64) drawing.Color {
|
|
||||||
c := drawing.Color{R: 0xff, G: 0xff, B: 0xff, A: 0xff} // white
|
c := drawing.Color{R: 0xff, G: 0xff, B: 0xff, A: 0xff} // white
|
||||||
var dv float64
|
var dv float64
|
||||||
|
|
||||||
|
|
2
style.go
2
style.go
|
@ -46,7 +46,7 @@ type Style struct {
|
||||||
DotWidth float64
|
DotWidth float64
|
||||||
|
|
||||||
DotWidthProvider SizeProvider
|
DotWidthProvider SizeProvider
|
||||||
DotColorProvider ColorProvider
|
DotColorProvider DotColorProvider
|
||||||
|
|
||||||
FillColor drawing.Color
|
FillColor drawing.Color
|
||||||
|
|
||||||
|
|
|
@ -39,5 +39,8 @@ type FullBoundedValueProvider interface {
|
||||||
// SizeProvider is a provider for integer size.
|
// SizeProvider is a provider for integer size.
|
||||||
type SizeProvider func(xrange, yrange Range, x, y float64) float64
|
type SizeProvider func(xrange, yrange Range, x, y float64) float64
|
||||||
|
|
||||||
// ColorProvider is a provider for dot size.
|
// ColorProvider is a general provider for color ranges based on values.
|
||||||
type ColorProvider func(xrange, yrange Range, x, y float64) drawing.Color
|
type ColorProvider func(v, vmin, vmax float64) drawing.Color
|
||||||
|
|
||||||
|
// DotColorProvider is a provider for dot color.
|
||||||
|
type DotColorProvider func(xrange, yrange Range, x, y float64) drawing.Color
|
||||||
|
|
|
@ -262,8 +262,8 @@ var viridisColors = [256]drawing.Color{
|
||||||
}
|
}
|
||||||
|
|
||||||
// Viridis creates a color map provider.
|
// Viridis creates a color map provider.
|
||||||
func Viridis(xr, yr Range, x, y float64) drawing.Color {
|
func Viridis(v, vmin, vmax float64) drawing.Color {
|
||||||
normalized := (y - yr.GetMin()) / yr.GetDelta()
|
normalized := (v - vmin) / (vmax - vmin)
|
||||||
index := uint8(normalized * 255)
|
index := uint8(normalized * 255)
|
||||||
return viridisColors[index]
|
return viridisColors[index]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue