# [R] Circular plot

swaraj basu projectbasu at gmail.com
Mon Feb 13 22:58:24 CET 2017

```Thank you David, I could get the circle at 12 and clockwise however I
believe my solution is not the optimal one, could you help me out with the
best way to generate the circle clockwise at 12 and then convert the

Here is what I tried

par(mar=c(2,2,2,2),xpd=TRUE);
plot(c(1,800),c(1,800),type="n",axes=FALSE,xlab="",ylab="",main="");
DrawCircle (x=400,y=400,r.out = 400, r.in = 400, theta.1=1.57,
theta.2=-2*pi-4.67, lwd=1)

On Mon, Feb 13, 2017 at 6:52 PM, David L Carlson <dcarlson at tamu.edu> wrote:

> You can do this easily with the DrawCircle() function in package
> DescTools. It is easiest to use geometric coordinates (0 is at 3 o'clock
> and moves counterclockwise around the circle), but it could be converted to
> 12 o'clock and clockwise:
>
> library(DescTools)
>
> # Convert begin/stop to radians
> dat\$begin <- 0 + 2 * pi * dat\$start/1500
> dat\$stop <- 0 + 2 * pi * dat\$end/1500
>
> # Open blank plot window and draw circles
> Canvas(xlim = c(-5,5), xpd=TRUE)
> DrawCircle (r.out = 5, r.in = 5, theta.1=.05, theta.2=2*pi-.05, lwd=3)
> with(dat, DrawCircle(r.out = 5 - score/5, r.in = 5 - score/5,
>      theta.1=begin, theta.2=stop, border=col, lwd=4))
> text(5.2, .4, "1", pos=4)
> text(5.2, -.4, "1500", pos=4)
>
> -------------------------------------
> David L Carlson
> Department of Anthropology
> Texas A&M University
> College Station, TX 77840-4352
>
>
>
>
> -----Original Message-----
> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of swaraj
> basu
> Sent: Monday, February 13, 2017 10:34 AM
> To: r-help at r-project.org
> Subject: [R] Circular plot
>
> I want to plot segments deleted from mitochondrial DNA of patients with
> neuromuscular disorders. I generate the plot on a linear chromosome using a
> code similar to as shown below
>
> start<-c(1,5,600,820)
> end<-c(250,75,810,1200)
> score<-c(7,-1,4,-6.5)
> dat<-data.frame(start=start,end=end,score=score,col="blue"
> ,stringsAsFactors=F)
> dat[dat\$score<0,]\$col<-"red"
>
> plot(1:1500,rep(0,1500),type="p",ylim=c(-10,10),col="white",
> xlab="position",ylab="score")
> segments(dat\$start, dat\$score, dat\$end, dat\$score, col=dat\$col, lwd=3)
>
>
> Since the human mitochondria is a circular genome, I would like to
> visualise the plot generated above as a circle where all segments with
> positive score lie inside the circle and those with negative score lie
> outside. Attached is a representation of my requirement, although here it
> is manually drawn. Can someone help me on this?
>
>
> --
> Swaraj Basu
>

--
Swaraj Basu

[[alternative HTML version deleted]]

```