[R] fancier plotting

From: Fred J. <phddas_at_yahoo.com>
Date: Sat 29 Jul 2006 - 19:19:12 EST


Hi

thank you for talking the time to help me with this.

I have a sequence of numbers in a file and an equal sequence of various character, say(a b c d) each occurs more than once. I need to plot the numbers so that numbers corresponding to a in the other sequence would have green dots, those corresponding to b a red dot, nothing on c and blue square for d. i.e

2 a show a green dot
4 b show a red dot
8 b show a red dot
6 c show default colour
2 d show blue square

I have the code below which plots the data but I have no clue how to inject the extra fancies.


###########
# ploting #
###########

library(tkrplot)

#just the turning points

L <- length(I0);                         #points to plot

tt <- tktoplevel()
left <- tclVar(1)
oldleft <- tclVar(1)
right <- tclVar(L)
cury <- tclVar(' ')
curx <- NA
tmpusr <- numeric(4)
tmpplt <- numeric(4)

f1 <- function(){
  lleft <- as.numeric(tclvalue(left))
  rright <- as.numeric(tclvalue(right))
  x <- seq(lleft,rright,by=1)
  par(bg='black', fg='green', col='white', col.axis='white',

      col.lab='magenta', col.main='blue', col.sub='cyan')   plot(x,I0[x], type='s')

## par(new=TRUE)
## plot(x,I1[x], type='s', col='yellow',axes=F)   

  par(new=TRUE)
  plot(x,I2[x], type='s', col='cyan',axes=F)

  axis(4)
  tmpusr <<- par('usr')
  tmpplt <<- par('plt')

  if(!is.na(curx)){

    abline(v=curx, col='red', lty=2)
    abline(h=332, col='red', lty=2)
    points(curx,I0[curx],pch=16,col='red')
  }

}

img <- tkrplot(tt, f1,hscale=2,vscale=1.2) tkconfigure(img, cursor='crosshair')

f2 <- function(...){

    ol <- as.numeric(tclvalue(oldleft))
    tclvalue(oldleft) <- tclvalue(left)
    r <- as.numeric(tclvalue(right))
    tclvalue(right) <- as.character(r + as.numeric(...) - ol)     tkrreplot(img)
}

f3 <- function(...){

    tkrreplot(img)
}

f4 <- function(...){
  i <- 100
  ol <- as.numeric(tclvalue(oldleft))
  tclvalue(left) <- as.character(ol+i)
  tclvalue(oldleft) <- as.character(ol+i)   r <- as.numeric(tclvalue(right))
  tclvalue(right) <- as.character(r+i)
  tkrreplot(img)
}

iw <- as.numeric(tcl('image','width', tkcget(img,'-image'))) ih <- as.numeric(tcl('image','height',tkcget(img,'-image')))

mm <- function(x,Y){
  tx <- (as.numeric(x)-1)/iw
  ty <- 1-(as.numeric(Y)-1)/ih   

  if( tx > tmpplt[1] & tx < tmpplt[2] &

     ty > tmpplt[3] & ty < tmpplt[4] ){     

    newx <- (tx-tmpplt[1])/(tmpplt[2]-tmpplt[1])*(tmpusr[2]-tmpusr[1])+tmpusr[1]     curx <<- round(newx)
    tkrreplot(img)

    newy <- I0[curx]
    newy <- floor(newy) + (newy-floor(newy))*32/100

# newy2 <- I1[curx]

    newy3 <- I2[curx]

    tclvalue(cury) <- paste('x =',curx,' I0=',round(newy,2)

                            ,'  I2=',round(newy3,4))
  }
}

tkbind(img, '<Motion>', mm)

l1 <- tklabel(tt, textvariable=cury)

s1 <- tkscale(tt, command=f2, from=1, to=length(I0),

    variable=left, orient="horiz",label='left',length=700) s2 <- tkscale(tt, command=f3, from=1, to=length(I0),

    variable=right, orient="horiz",label='right',length=700) b1 <- tkbutton(tt, text='->', command=f4)

tkpack(l1,img,s1,s2,b1)


        [[alternative HTML version deleted]]



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 and provide commented, minimal, self-contained, reproducible code. Received on Sat Jul 29 19:25:42 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sun 30 Jul 2006 - 00:16:37 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.