[R] Changing a plot
Peter Dalgaard
P.Dalgaard at biostat.ku.dk
Thu Sep 25 16:22:49 CEST 2008
R Help wrote:
> Thanks, I looked into the grid package. The grid package does do a
> better job of managing the plotting, but it's still re-plotting the
> entire canvas whenever a modifcation is made to a plot.
>
> I guess I should have been a little clearer with my question. Here's
> a sample function.
>
> library(tcltk)
> x = runif(10000)
> y = runif(10000)
> v1 <- viewport()
> grid.rect(gp = gpar(lty = "dashed"))
> pushViewport(plotViewport(c(5.1, 4.1, 4.1, 2.1)))
> pushViewport(dataViewport(x, y))
> grid.rect()
> grid.xaxis()
> grid.yaxis()
> grid.points(x, y)
> grid.text("1:10", x = unit(-3, "lines"), rot = 90)
> v2 <- viewport()
> push.viewport()
> grid.points(x[1],y[1],pch=16,gp=gpar(col='green'),name='pts')
> index = tclVar(1)
> grid
> refresh <- function(...){
> i <- as.numeric(tclvalue(index))
> grid.edit('pts',x=unit(x[i],'npc'),y=unit(y[i],'npc'))
>
> }
> m <- tktoplevel()
> pScale <- tkscale(m,from=0,to=10000,orient='horiz',resolution=1,variable=index,command=refresh)
> tkgrid(pScale)
>
> The green point should change as the slider is moved, but there are so
> many points in the background that replotting them confuses the
> graphic. What I want to be able to do is replt the green point
> without removing the background.
>
>
The TK canvas is rather good at replotting only what is necessary.
Unfortunately, it lacks functionality for a real graphics driver, but
you might want to look into demo(tkcanvas).
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-help
mailing list