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 begin/stop to radians
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 <dcarl...@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-boun...@r-project.org] On Behalf Of swaraj > basu > Sent: Monday, February 13, 2017 10:34 AM > To: r-help@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]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.