Plot availability
On Fri, Sep 19, 2008 at 2:00 PM, john crepezzi <seejohnrun at gmail.com> wrote:
I'm not so sure the original way I stated my issue was clear enough, so I'll attempt to elaborate a little bit. I'd like to make a function that is passed the name of a plot object, and a lines/point specification, and graphs them all on the same plot. I don't want to redraw the plot each time, and I don't want the code to have any concept of a "first entry" instantiating the plot with plot() in place of lines(). Ideally, I'd like something to the effect of: plot <- createPlot(main = "Hello World", sub = "tiny, little world", xlim = c(-3, 3), ylim = c(-3, 3)) plot <- addElement(plot, lines(col = 'BLUE', x = c(0, 1, 2, 3), y = c(3, 2, 1, 0))) Hopefully this laid my problem out a little better. Thanks in advance for any help you might be able to offer -John Crepezzi On Sep 19, 10:11 am, Duncan Murdoch <murd... at stats.uwo.ca> wrote:
On 9/19/2008 9:32 AM, john crepezzi wrote:
Is it possible to see if a plot is already open before I call lines()?
I don't think so. You can see if a graphics device is open by looking at dev.cur(), but I don't think there's a test for plot.new(). I'd just wrap the call in try() if you're not sure it will work.
Using classic graphics try this:
# classic graphics
plot(BOD)
p <- recordPlot()
# some times go by and other plots are made
plot(0)
# now go back to the original plot and add more
replayPlot(p)
points(5, 15, col = "red")
In lattice graphics its like this:
# lattice graphics
library(lattice)
p <- xyplot(demand ~ Time, BOD)
# some times go by and other plots are made
plot(0)
# now replot the original plot and add more
plot(p)
trellis.focus("panel", 1, 1)
panel.points(5, 15, col = "red")
trellis.unfocus()
ggplot2 is also grid-based and should be amenable to
this sort of thing too.