Home > OS >  How to draw a half circle on a plot?
How to draw a half circle on a plot?

Time:12-15

I am trying to draw some half circles on a plot, using the trigonometric functions in R. So here is what I have :

matPoints <<- as.data.frame(cbind(X=c(-1, -(sqrt(3)/2), -(sqrt(2)/2), -0.5, 0, 0.5, sqrt(2)/2, sqrt(3)/2, 1), Y=c(0, 0.5, sqrt(2)/2, sqrt(3)/2, 1, sqrt(3)/2, sqrt(2)/2, 0.5, 0)))

plot(x = matPoints$X*W, y = matPoints$Y*W)

For the moment, it prints each point on the plot. What I want to do here is to trace a smooth line between points so it gives me a beautiful half circle of center (0, 0) and of scale W.

Any solution?

CodePudding user response:

Do you mean this?

x <- seq(0, pi, length.out = 500)
W <- 3
plot(cos(x) * W, sin(x) * W, type = "l")

enter image description here

CodePudding user response:

Since the general equation of a circle is x^2 y^2 = r^2, you can mimic it like below as well,

r=3 # radius
x <- seq(-r,r,0.01)
y  <- sqrt(r^2 - x^2)

plot(x,y,type="l")
# plot(c(x,x),c(y,-y),type="l") for a full circle.

gives,

enter image description here

CodePudding user response:

Here's another possibility using complex numbers, and polygon to draw a closed shape.

plot(NA, xlim=c(-2,2), ylim=c(-2,2))
polygon(1i^(seq(0,2,l=100)))

enter image description here

Using this method you can easily change the centre, scale, rotation, fill colour etc:

plot(NA, xlim=c(-2,2), ylim=c(-2,2))
polygon(2*(1i^(seq(0,2,l=100)))*1i^.5   .1-.3i, col="red")
polygon(1i^(seq(0,2,l=100)), col="blue")

enter image description here

  • Related