Changing a plot
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.
Sam Stewart
On Wed, Sep 24, 2008 at 11:12 AM, Ben Bolker <bolker at ufl.edu> wrote:
R Help <rhelp.stats <at> gmail.com> writes:
Hello list, I've been working on this problem for a while and I haven't been able to come up with a solution. I have a couple of functions that plot a bunch of data, then a single point on top of it. What I want is to be able to change the plot of the point without replotting all the data. Consider the following example: x = rnorm(100,1,0.5) y = rnorm(100,1,0.5) plot(x,y,pch=16) points(x[35],y[35],pch=19,col=6,cex=3) What I want to be able to do is to change the purple point to a different value without replotting everything.
R's default (base) graphics model is a 'canvas' -- things get drawn, but nothing ever gets erased. (The cheap solution is to overplot in the background color, but that won't work if there's stuff underneath the point that you want to preserve.) You probably need to move to the grid graphics package (hint: buy or borrow Paul Murrell's book) to do something like this. Ben Bolker
______________________________________________ R-help at r-project.org 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.