[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
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 <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]]
More information about the R-help
mailing list