make graph slightly resizeable

This commit is contained in:
2022-06-16 09:27:18 -06:00
parent 09982ece64
commit 701a622177
2 changed files with 36 additions and 35 deletions

View File

@@ -26,12 +26,11 @@ func CreateGraph() bytes.Buffer {
func init() { func init() {
colors := []string{"#767960", "#a7297f", "#e8ca89", "#f5efd6", "#858966"} colors := []string{"#767960", "#a7297f", "#e8ca89", "#f5efd6", "#858966"}
colors = []string{"#161b22", "#0e4429", "#006d32", "#26a641", "#39d353"}
for _, c := range colors { for _, c := range colors {
color := sc.FromHexString(c) color := sc.FromHexString(c)
_ = c
colorScheme = append(colorScheme, color) colorScheme = append(colorScheme, color)
} }
} }
func SetColorScheme(c []color.Color) { func SetColorScheme(c []color.Color) {
@@ -52,13 +51,45 @@ func ColorForFrequency(freq, min, max int) sc.SimpleColor {
} }
return colorScheme[colorIndex] return colorScheme[colorIndex]
} }
func GetImage(frequencies []int) bytes.Buffer { func GetYearImage(frequencies []int) bytes.Buffer {
squareColors := []sc.SimpleColor{} squareColors := []sc.SimpleColor{}
min, max := minmax(frequencies) min, max := minmax(frequencies)
for _, f := range frequencies { for _, f := range frequencies {
squareColors = append(squareColors, ColorForFrequency(f, min, max)) squareColors = append(squareColors, ColorForFrequency(f, min, max))
} }
return drawImage(squareColors) return drawYearImage(squareColors)
}
func drawYearImage(c []sc.SimpleColor) bytes.Buffer {
//TODO here, draw suqares in appropriate colors, hopefully as an svg
var sb bytes.Buffer
sbw := bufio.NewWriter(&sb)
squareLength := 10
width := (len(c)/7+1)*squareLength*2 + squareLength*5
height := squareLength*9 + squareLength*3
canvas := svg.New(sbw)
canvas.Start(width, height)
for i, s := range c {
canvas.Square(2*squareLength+width/(len(c)/7+1)*(i/7)+squareLength*2, squareLength/2+height/7*(i%7), squareLength, fmt.Sprintf("fill:%s", s.HexString()))
}
canvas.Text(2*squareLength, squareLength*3, "Mon", fmt.Sprintf("text-anchor:middle;font-size:%dpx;fill:black", squareLength))
canvas.Text(2*squareLength, int(float64(squareLength)*6.5), "Wed", fmt.Sprintf("text-anchor:middle;font-size:%dpx;fill:black", squareLength))
canvas.Text(2*squareLength, int(float64(squareLength))*10, "Fri", fmt.Sprintf("text-anchor:middle;font-size:%dpx;fill:black", squareLength))
canvas.End()
sbw.Flush()
return sb
}
func minmax(f []int) (int, int) {
min, max := 0, 0
for _, x := range f {
if x < min {
min = x
} else if x > max {
max = x
}
}
return min, max
} }
func svgToPng() { func svgToPng() {
@@ -86,33 +117,3 @@ func svgToPng() {
panic(err) panic(err)
} }
} }
func drawImage(c []sc.SimpleColor) bytes.Buffer {
//TODO here, draw suqares in appropriate colors, hopefully as an svg
var sb bytes.Buffer
sbw := bufio.NewWriter(&sb)
width := 717
height := 112
squareLength := 10
canvas := svg.New(sbw)
canvas.Start(width, height)
for i, c := range c {
canvas.Square(10+squareLength+width/52*(i/7), squareLength/2+height/7*(i%7), squareLength, fmt.Sprintf("fill:%s", c.HexString()))
}
canvas.Text(width/100, squareLength*2+10, "Mon", "text-anchor:middle;font-size:10px;fill:black")
canvas.End()
sbw.Flush()
return sb
}
func minmax(f []int) (int, int) {
min, max := 0, 0
for _, x := range f {
if x < min {
min = x
} else if x > max {
max = x
}
}
return min, max
}

View File

@@ -17,7 +17,7 @@ func main() {
for i := 0; i < 366; i++ { for i := 0; i < 366; i++ {
freq = append(freq, rand.Int()) freq = append(freq, rand.Int())
} }
svg := graph.GetImage(freq) svg := graph.GetYearImage(freq)
f, err := os.Create("out.svg") f, err := os.Create("out.svg")
if err != nil { if err != nil {
fmt.Printf("Error: %v\n", err) fmt.Printf("Error: %v\n", err)