Skip to content

Plot(x,y) help

4 messages · jim holtman, Rui Barradas, YAddo

#
Dear All:

I would any appreciate any help with this plot I am struggling with.

I have 4 estimates (95% CIs) I want to plot. I want the CI lines to be
horizontal on each plotted point. I was trying to tweak some old codes  (was
for a vertical CI  lines) into horizontal but not much dice. 

Many thanks in advance for your help.

YA


My working codes:

x=c(1,1,1,1.1,1.1,1.1,2,2,2,2.1,2.1,2.1)
y=c(1.73,1.30,2.30, 1.83,1.36,2.45,1.46,1.07,2.00,1.58,1.15,2.17)

ptidx = seq(1,12,by=3)
lciidx = seq(2,12,by=3)
uciidx = seq(3,12,by=3)

plot(x,y, type="n",axes=F, xlab="PR(95% CI)",ylab=" ")

points(x[ptidx],y[ptidx],pch=19,cex=4.5)
points(x[lciidx],y[lciidx],pch="_",cex=4.5)
points(x[uciidx],y[uciidx],pch="_",cex=4.5)
box()

for(i in 1:4)
{
 
lines(c(x[lciidx[i]],x[uciidx[i]]),c(y[lciidx[i]],y[uciidx[i]],lwd=4,cex=4.5))
  
}






--
View this message in context: http://r.789695.n4.nabble.com/Plot-x-y-help-tp4650874.html
Sent from the R help mailing list archive at Nabble.com.
#
Try this code that uses "segments" to draw in the bars

# put data into a nicer form
y=c(1.73,1.30,2.30, 1.83,1.36,2.45,1.46,1.07,2.00,1.58,1.15,2.17)
ym <- matrix(y
    , ncol = 3
    , byrow = TRUE
    , dimnames = list(NULL, c("Val", "Lower", "Upper"))
    )
ym <- cbind(ym, x = 1:4)  # add the x-coord
barWidth <- .1
# plot the data points
plot(ym[, 'x']
    , ym[, 'Val']
    , pch = 19
    , cex = 2
    , ylim = range(ym[, "Upper"], ym[, "Lower"])
    )
# draw the CI values as segments
# three sets of coords - top bar, bottom bar, connecting line
segments(c(ym[, 'x'] - barWidth, ym[, 'x'] - barWidth, ym[, 'x'])
      , c(ym[, 'Upper'], ym[, 'Lower'], ym[, 'Upper'])
      , c(ym[, 'x'] + barWidth, ym[, 'x'] + barWidth, ym[, 'x'])
      , c(ym[, 'Upper'], ym[, 'Lower'], ym[, 'Lower'])
      )
On Mon, Nov 26, 2012 at 1:31 PM, YAddo <linkyox at gmail.com> wrote:

  
    
#
Hello,

You had a typo in the lines() instruction, the parenthesis didn't close 
after c(y...).
Anyway, I'm not sure I understand but to have horizontal lines, just 
reverse the roles of x and y. (And change pch = "_" to pch = "|").

plot(y, x, type="n",axes=F, xlab="PR(95% CI)",ylab=" ")

points(y[ptidx],x[ptidx], pch=19,cex=4.5)
points(y[lciidx],x[lciidx], pch="|",cex=4.5)
points(y[uciidx],x[uciidx], pch="|",cex=4.5)
box()

for(i in 1:4){
     lines(c(y[lciidx[i]], y[uciidx[i]]),
         c(x[lciidx[i]], x[uciidx[i]]), lwd=4,cex=4.5)
}


Hope this helps,

Rui Barradas
Em 26-11-2012 18:31, YAddo escreveu: