[R] A polar.plot BUG in plotrix 1.3.3 ?

From: Halldor Björnsson <halldor_at_vedur.is>
Date: Wed 22 Jun 2005 - 22:38:14 EST


Hi,

I just updated to R-2.1.1 and updated packages acordingly

However, after the update, routines that use polar.plot did not function as correctly.

In plotrix 1.3.3 the polar.plot function does scale label.pos to radians prior to calling radial.plot

Hence, the command
polar.plot(c(5,10,5,0),c(-10,0,10,20),rp.type='P',

     labels=c("A","N","V","S"),label.pos=c(0,90,180,270))

produces absurd compass lines but the correct results are obtained if label.pos is scaled with pi/180 :

polar.plot(c(5,10,5,0),c(-10,0,10,20),rp.type='P',

     labels=c("A","N","V","S"),label.pos=c(0,90,180,270)*pi/180)

I have attatched the polar.plot function from the two different versions of the package.

It seems that if not missing then label.pos is not changed at all in version 1.3.3

So, a feature or a bug?

Sincerely,

-- 
------------------------------------------
Halldor Bjornsson   (halldor@vedur.is)
Vedurstofa Islands (Icelandic Met. Office)
Bustadavegur 9, IS-150, Reykjavik, Iceland
------------------------------------------

In version 1.3.3

polar.plot<-function(lengths,polar.pos,labels,label.pos,rp.type="r",...) {
  npos<-length(lengths)

# if no positions are given, add the average distance between
positions so that
# the first and last line don't overlap
if(missing(polar.pos)) radial.pos<-seq(0,(2-2/(npos+1))*pi,length=npos) else radial.pos<-pi*polar.pos/180 if(missing(labels)) { labels<-as.character(seq(0,340,by=20)) label.pos<-seq(0,1.9*pi,length=18) } if(missing(label.pos)) label.pos<-pi*label.pos/180 radial.plot(lengths,radial.pos,range(radial.pos),labels,label.pos, rp.type=rp.type,...) } In version 1.2 polar.plot<-function(lengths,polar.pos,labels,label.pos,rp.type="r",...) { npos<-length(lengths)
# if no positions are given, add the average distance between
positions so that
# the first and last line don't overlap
if(missing(polar.pos)) polar.pos<-seq(0,360-360/(npos+1),length=npos) if(missing(labels)) { label.pos<-seq(0,340,by=20) labels<-as.character(label.pos) label.range<-c(0,pi*340/180) } if(missing(label.pos)) label.pos<-polar.pos polar.range<-range(polar.pos) newrange<-c(pi*polar.range[1]/180,pi*(2-(360-polar.range[2])/180))
# rescale to radians
radial.pos<-rescale(c(polar.pos,polar.range),newrange)[1:npos] nlabels<-length(labels) label.pos<-rescale(c(label.pos,0,360),c(0,2*pi))[1:nlabels] radial.plot(lengths,radial.pos,newrange,labels,label.pos,rp.type=rp.type,...) } ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Received on Wed Jun 22 22:37:26 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:32:56 EST