package main //go:generate go run main.go import ( "fmt" "log" "net/http" "os" "git.smarteching.com/zeni/go-chart/v2" ) func drawChart(res http.ResponseWriter, req *http.Request) { graph := chart.BarChart{ Title: "Test Bar Chart", Background: chart.Style{ Padding: chart.Box{ Top: 40, }, }, Height: 512, BarWidth: 60, Bars: []chart.Value{ {Value: 5.25, Label: "Blue"}, {Value: 4.88, Label: "Green"}, {Value: 4.74, Label: "Gray"}, {Value: 3.22, Label: "Orange"}, {Value: 3, Label: "Test"}, {Value: 2.27, Label: "??"}, {Value: 1, Label: "!!"}, }, } res.Header().Set("Content-Type", "image/png") err := graph.Render(chart.PNG, res) if err != nil { fmt.Printf("Error rendering chart: %v\n", err) } } func port() string { if len(os.Getenv("PORT")) > 0 { return os.Getenv("PORT") } return "8080" } func main() { listenPort := fmt.Sprintf(":%s", port()) fmt.Printf("Listening on %s\n", listenPort) http.HandleFunc("/", drawChart) log.Fatal(http.ListenAndServe(listenPort, nil)) }