Wasn't exactly sure what you wanted to do. Is this close?
mypch <- c(a=19, b=19, c=19, d=22) #point type
mycol <- c(a='green', b='red', c='black',
d='blue') #color
mydf <- data.frame(x=c('a','b',
'b','c','d'), y=c(2, 4, 8, 6, 2))
plot(mydf$y, type='p', pch=mypch[mydf$x], col=mycol[mydf$x])
On 7/29/06, Fred J. <phddas@yahoo.com> wrote:>
> 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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
[[alternative HTML version deleted]]