1

I am using the radial.plot function of the plotrix-package in R. Does anyone know of a straightforward way to implement standard-error bars. The solution would have to work even when there is more than one datapoint per radial position which could lead to partial overlap of the SE-bar (see graph below).

Now the graph looks like this:

test

Used Code:

library(plotrix)
ppp <- matrix(runif(1:16, 10, 60), nrow=2, ncol=8)
kl <- c(0, pi/4, pi/2, pi*0.75,pi, pi+pi/4,pi+pi/2, pi+pi*0.75)
plot_rt_soa7 <- radial.plot(ppp,rp.type="p",radial.pos=kl,
                label.pos=kl,start=pi/2,
                labels=1:8,radial.lim=c(-10,65),main="SOA 7")
                legend(45,50,c("T-oben", "T-unten"),col=1:2,lty=1)

The errorbars could look e.g. like this: (from How to plot error bars in polar coordinates in python?)

enter image description here

Any help would be much appreciated

Community
  • 1
  • 1
shizzle
  • 89
  • 11
  • Welcome to SO! Please include a [reproducible example](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610). This makes it much easier for others to help you. – Jaap Oct 31 '15 at 17:06
  • Thanks a lot! Added a rep.example and changed picture accordingly – shizzle Oct 31 '15 at 19:38

1 Answers1

2

Here is some basic code that will plot error bars for both the 'x' (orthogonal to radius) and 'y' (parallel to radius) dimensions, and a point for the center value. It does not use the plotrix package for the error bar plotting, but instead uses R base graphics. You must provide the errors for the dimensions or comment out the part of the code that plots undesired errors. There are several graphical parameters for line weight, color, point color, and point shape. A sample graph is provided below.

library(plotrix)
set.seed(10) # seed for reproducable graph
ppp <- matrix(runif(1:16, 10, 60), nrow=2, ncol=8)
kl <- c(0, pi/4, pi/2, pi*0.75,pi, pi+pi/4,pi+pi/2, pi+pi*0.75)
start <- pi/2 # know starting value for plotting points angularl
rad_low_lim <- -10 # used when computing values of the error lines and in plot limits
plot_rt_soa7 <- radial.plot(ppp,rp.type="p"
                            ,radial.pos=kl
                            ,label.pos=kl
                            ,start=start
                            ,labels=1:8
                            ,radial.lim=c(rad_low_lim,65)
                            ,main="SOA 7")
legend(40,120,c("T-oben", "T-unten"),col=1:2,lty=1)

# generating random error values for both x and y
error_ppp_y <- matrix(rnorm(16, 15, 5), nrow=2, ncol=8)
error_ppp_x <- matrix(rnorm(16, 10, 3), nrow=2, ncol=8)

bar_cols <- c('blue','green') # colors for bars
lwds <- c(4,2) # line weights for bars
pts_cols <- c('black','red') # colors for points
pts_pch <- c(19,17) # point pch

# loop over the number of rows (T-oben and T-unten)
for(j in 1:2){

  # loop over the observations
  for(i in 1:ncol(ppp)){

    # plotting the errors of the 'y' value
    # center value is determined and errors are rotated to make
    # parallel to the radius
    lines(c(ppp[j,i]+error_ppp_y[j,i]-rad_low_lim,ppp[j,i]-error_ppp_y[j,i]-rad_low_lim)*cos(kl[i]+start)
          ,c(ppp[j,i]+error_ppp_y[j,i]-rad_low_lim,ppp[j,i]-error_ppp_y[j,i]-rad_low_lim)*sin(kl[i]+start)
          ,lwd=lwds[j]
          ,col=bar_cols[j]
    )

    # plotting the 'x' errors that are orthognal to the radius
    # points are the "center" with the error values rotated to make them orthognal to the radius
    # comment out if not desired
    lines((ppp[j,i]-rad_low_lim)*cos(kl[i]+start)+c(error_ppp_x[j,i],-error_ppp_x[j,i])*cos(kl[i])
          ,(ppp[j,i]-rad_low_lim)*sin(kl[i]+start)+c(error_ppp_x[j,i],-error_ppp_x[j,i])*sin(kl[i])
          ,lwd=lwds[j]
          ,col=bar_cols[j]
    )

    # plotting points for the center
    # comment out if not desired
    points((ppp[j,i]-rad_low_lim)*cos(kl[i]+start)
          ,(ppp[j,i]-rad_low_lim)*sin(kl[i]+start)
          ,col=pts_cols[j]
          ,pch=pts_pch[j]
    )
  }
}

enter image description here

Calvin
  • 1,309
  • 1
  • 14
  • 25
  • Unbelievable!! Thank you soo much. This worked perfectly. This site is awesome. I'll definitely try to contribute more to the community. – shizzle Nov 06 '15 at 18:53
  • If my answer was sufficient please accept it as the answer to your question. – Calvin Nov 06 '15 at 19:34