Fun & easy way to create color gradient / color scales in Go (Golang).
import "github.com/mazznoer/colorgrad"
grad, err := colorgrad.NewGradient().Build()
if err != nil {
panic(err)
}
// Get single color at certain position.
grad.At(0) // colorful.Color
grad.At(0.5).Hex() // hex color string
grad.At(1)
// Get n colors evenly spaced across gradient.
grad.Colors(27) // []colorful.Color
colorgrad.IntoColors(grad.Colors(10)) // []color.Color
Colors()
method accept anything that implement color.Color interface.
import "image/color"
import "github.com/lucasb-eyer/go-colorful"
grad, err := colorgrad.NewGradient().
Colors(
color.RGBA{0, 206, 209, 255},
color.RGBA{255, 105, 180, 255},
colorful.Color{R: 0.274, G: 0.5, B: 0.7},
colorful.Hsv(50, 1, 1),
colorful.Hsv(348, 0.9, 0.8),
).
Mode(colorgrad.HCL).
Build()
grad, err := colorgrad.NewGradient().
HtmlColors("#FFD700", "#00BFFF", "#FFD700").
Build()
We can also use named colors as defined in the SVG 1.1 spec.
grad, err := colorgrad.NewGradient().
HtmlColors("gold", "hotpink", "darkturquoise").
Build()
grad, err := colorgrad.NewGradient().
HtmlColors("#DC143C", "#FFD700", "#4682b4").
Build()
grad, err := colorgrad.NewGradient().
HtmlColors("#DC143C", "#FFD700", "#4682b4").
Domain(0, 0.35, 1).
Build()
grad, err := colorgrad.NewGradient().
HtmlColors("#DC143C", "#FFD700", "#4682b4").
Domain(15, 60, 80).
Build()
grad.At(15).Hex() // #DC143C
grad.At(75)
grad.At(80).Hex() // #4682b4
grad, err := colorgrad.NewGradient().
HtmlColors("#ff0", "#008ae5").
Mode(colorgrad.LRGB).
Build()
Read it here.
grad, err := colorgrad.NewGradient().
HtmlColors("#DC143C", "#FFD700", "#4682b4").
Mode(colorgrad.HCL).
Build()
grad.At(t) // might get invalid RGB color
grad.At(t).Clamped() // return closest valid RGB color
grad1, err := colorgrad.NewGradient().
HtmlColors("#18dbf4", "#f6ff56").
Domain(0, 100).
Build()
grad2 := colorgrad.SharpGradient(grad1, 7)
Note: Result gradient from SharpGradient()
will always in the range 0..1
.
grad := colorgrad.Rainbow()
grad.At(t) // t in the range 0..1
grad.Colors(15)