[R] Plot to a device and examine the plot?

Shu Fai Cheung @hu|@|@cheung @end|ng |rom gm@||@com
Mon Oct 16 04:19:34 CEST 2023

Thanks a lot for introducing these functions! I am not aware of them
but it seems that they can help me to do what I want to do.

Shu Fai

Shu Fai Cheung (張樹輝)

On Mon, Oct 16, 2023 at 12:24 AM Duncan Murdoch
<murdoch.duncan using gmail.com> wrote:
> On 15/10/2023 12:05 p.m., Shu Fai Cheung wrote:
> > Let me clarify my question:
> >
> > plot.new()
> > polygon(c(.5, .5, .75, .8), c(.25, .3, .4, .5))
> >
> > If the device is an on-screen device, can I check whether a particular area
> > has anything drawn on it, or, to be precise, whether the color of a
> > particular area has all pixels equal to the background color. That is, if
> > the background is white, can I know whether a particular area is white?
> >
> > E.g.,  in the case above, the area bounded by rect(0, 0, .25, .25) is
> > completely white, while the area bounded by rect(0, 0, .75, .75) is not
> > because part of border of the polygon, black by default, has been drawn in
> > this area.
> >
> > If the device is an image file, then I can check the color of a pixel. I
> > would like to know whether I can do the same with an on-screen device.
> >
> I think the answer is that you can't do that in general.  However, in
> general you can copy a plot to a different device using dev.copy() and
> examine it there.  It won't be pixel-by-pixel identical, but will
> contain the same components, likely with slightly different scaling and
> positioning if the new device isn't the same as the old one.
> You can also save the commands that drew the plot using recordPlot() and
> redraw it using replayPlot() (which is essentially what dev.copy()
> does), but the format of the object saved by recordPlot() is not
> documented, and is subject to change with R version changes.
> Duncan Murdoch

More information about the R-help mailing list