79533886

Date: 2025-03-25 14:00:43
Score: 0.5
Natty:
Report link

A Scatter chart is created using NewScatter(). This works well for Cartesian coordinates where each (x, y) is treated as a data point.
The x-axis and y-axis are set to numeric values (not categorical) using charts.WithXAxisOpts() and charts.WithYAxisOpts().

package main

import (
    "log"
    "math"
    "net/http"

    "github.com/go-echarts/go-echarts/v2/charts"
    "github.com/go-echarts/go-echarts/v2/opts"
)

func main() {
    line := charts.NewScatter()

    line.SetGlobalOptions(
        charts.WithTitleOpts(opts.Title{Title: "Cartesian Coordinates Example"}),
        charts.WithXAxisOpts(opts.XAxis{Type: "value", Name: "X-Axis"}),
        charts.WithYAxisOpts(opts.YAxis{Type: "value", Name: "Y-Axis"}),
    )

    radius := 10.0
    numPoints := 100
    data := generateCircleData(radius, numPoints)

    line.AddSeries("Circle", data)

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        err := line.Render(w)
        if err != nil {
            log.Println("Error rendering chart:", err)
        }
    })

    log.Println("Starting server at http://localhost:8081")
    http.ListenAndServe(":8081", nil)
}

func generateCircleData(radius float64, numPoints int) []opts.ScatterData {
    data := make([]opts.ScatterData, 0, numPoints)
    for i := 0; i < numPoints; i++ {
        theta := 2 * math.Pi * float64(i) / float64(numPoints) // Angle in radians
        x := radius * math.Cos(theta)                         
        y := radius * math.Sin(theta)                        
        data = append(data, opts.ScatterData{Value: [2]float64{x, y}})
    }
    return data
}

enter image description here

Reasons:
  • Blacklisted phrase (1): thX
  • Probably link only (1):
  • Long answer (-1):
  • Has code block (-0.5):
Posted by: Szymon Roziewski