[R] Rose diagrams in R?

Paul Murrell p.murrell at auckland.ac.nz
Sun Nov 25 20:28:24 CET 2001


Hi


> i wrote a small function (rose) for that problem. It accept datas
> between 0 and 360 and draw something
> like you want. You also can
>
> rose <- function(data,step=30,main='wind rose'){
>   deg2rad <- 180/pi
>   data <- (data+step/2)%%360# Values like 359 go to Sector 0
>   histdata <- hist(data,breaks=seq(0,360,by=step),plot=F) #use hist for
> counting
>   counts <- histdata$counts
>   maxcount <- max(counts)
>   mids <- (histdata$mids-step/2)/deg2rad
>   step <- step/deg2rad
>   plot(c(-1,1),c(-1,1),,xlab='',ylab='',
>        main=main,xaxt='n',yaxt='n',pch=' ')
>   for (i in 1:length(counts)){
>     w1 <- mids[i]-step/2
>     w2 <- mids[i]+step/2
>     lines(counts[i]/maxcount*c(0,sin(w1),sin(w2),0),
>           counts[i]/maxcount*c(0,cos(w1),cos(w2),0))#draw sector
>     text(sin(mids[i]),cos(mids[i]),counts[i])
>   }
>   names(counts) <- round(mids*deg2rad,3)
>   counts
> }
>
> #Test with 500 values between 0 and 360 (uniform distribution)
> rose(runif(500)*360,360/16)


You might want to include a par(pty="s") in there somewhere (or something
equivalent) to make sure that the plot comes out "square".

Paul


-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list