gonum / gonum/plot

plot/vg: Unable to add or visualize an Arc from vg.Path

Open
#778 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
3k
Forks
201
PR merge metrics
No merged PRs in 30d

Description

### What are you trying to do?
I am trying to draw arcs on a plot and here as an example I specifically try to display an arc with center (0,0) and radius of 1 from the angle 0 to pi and save that to a .png file.

### What did you do?

Here is a minimal working example of the code I used:

```

package main

import (
"math"

"gonum.org/v1/plot"
"gonum.org/v1/plot/vg"
"gonum.org/v1/plot/vg/draw"
"gonum.org/v1/plot/vg/vgimg"
)

func main() {
p := plot.New()
p.Title.Text = "Arc Plot Example"
p.X.Label.Text = "X"
p.Y.Label.Text = "Y"

// Create Canvas
cnvs := vgimg.PngCanvas{
Canvas: vgimg.New(5*vg.Centimeter, 5*vg.Centimeter),
}

// Draw arc
centerX := 0.0 // X-coordinate of the center of the circle
centerY := 0.0 // Y-coordinate of the center of the circle
radius := 1.0 // Radius of the circle
startAngle := 0.0 // Start angle of the arc (in radians)
endAngle := math.Pi // End angle of the arc (in radians)

path := vg.Path{}
path.Arc(vg.Point{X: vg.Length(centerX), Y: vg.Length(centerY)}, vg.Length(radius), startAngle, endAngle) // Add the arc to the path
cnvs.Stroke(path)

// Add the canvas and the Arc to the plot
p.Draw(draw.New(cnvs))

// Save plot and also try to save canvas to file directly

// Save the plot to a PNG file.
if err := p.Save(5*vg.Centimeter, 5*vg.Centimeter, "figures/arc1.png"); err != nil {
panic(err)
}

// Save the canvas directly to a PNG file.
w, err := os.Create("figures/arc2.png")
if err != nil {
panic(err)
}
defer w.Close()
if _, err := cnvs.WriteTo(w); err != nil {
panic(err)
}

// pic.ShowImage(cnvs.Image())
}

```
I tried to use the go playground and pic.ShowImage(img) as suggested but it won't compile. Still, find the link below if it can work for you...
https://go.dev/play/p/KMPRsOUcO-0

### What did you expect to happen?
It should draw the arc (line) as described above, i.e. we should see half a circle spanning from -1 to 1 with a radius of 1 on the side of the positive y-axis values.

### What actually happened?
Nothing is drawn to the image except the axes and title.

![arc1](https://github.com/gonum/plot/assets/106663131/2990ce40-8bc1-4f75-b4f8-679cbe2bf166)

### What version of Go and Gonum/plot are you using?
go 1.20
gonum.org/v1/plot v0.13.0

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.