For all par(xpd) settings, plot is clipped (Was: [R] Place a graphic into an R-plot)
Dirk Eddelbuettel
edd at debian.org
Sat Sep 20 18:39:07 CEST 2003
Using Roger's rather useful addlogo() function (still included below), I am
unable to plot a pixmap anywhere but in the core plot region.
In other words, when using the following code, and placing one coordinate
inside and one coordinate outside the plot region,
> library(pixmap)
> logo<-read.pnm(system.file("pictures/logo.ppm", package="pixmap"))
> source("/tmp/addlogo.R")
> par(xpd=NA); plot(1:10); addlogo(x=c(2,4),y=c(9,11), pixmap=logo)
> par(xpd=FALSE); plot(1:10); addlogo(x=c(2,4),y=c(9,11), pixmap=logo)
> par(xpd=TRUE); plot(1:10); addlogo(x=c(2,4),y=c(9,11), pixmap=logo)
all attempts result in a partial clipped pixmap (given the 1:10,1:10 plot
region). Setting xpd inside addlogo()'s plot() made no difference. This was
using this morning's alpha release of 1.8.0, and on Linux -- but it behaved
the same on win2k with an older version of R.
Am I misunderstanding something (which is most likely, given the still
mysterious ways of ?par), or is this a bug in pixmap's plot method?
Thanks, Dirk
On Thu, Sep 18, 2003 at 03:24:32PM +0200, Roger Bivand wrote:
> Gordon:
>
> This is a copy of an off-list reply from May 2003, which may give some
> assistance - not quite the same, because here the image was inserted into
> an existing plot. It is based on using the pixmap package to import a
> ppm or pnm file, then rescaling to fit the designated space.
>
> Roger Bivand
>
> ---------- Forwarded message ----------
> Date: Mon, 26 May 2003 11:26:21 +0200 (CEST)
> From: Roger Bivand <Roger.Bivand at nhh.no>
> To: meinhardploner at gmx.net
> Cc:
> Subject: Re: [R] overlapping a plot with an external image
>
> > On Wednesday, May 21, 2003, at 04:38 PM, Prof Brian Ripley wrote:
>
> >> On Wed, 21 May 2003, Meinhard Ploner wrote:
> >
> >>> It's possible to overlap an external image (jpg or pdf)
> >>> with a plot generated with R?
> >>
> >>> Specifying the image as the background
> >>> of the plot might not be possible...
> >
> >> Although this has been discussed, R graphics devices cannot as yet plot
> >> bitmap images. So all one can do is to plot a set of rectangles: for
> >> that the pixmap package might be helpful.
> >
> >> Although we might add the ability to plot a bitmap image, note that it
> >> is not straightforward, as R screen graphics devices can be dynamically
> >> resized. What should be done with a plotted image then? Interpolate
> >> on the fly?
>
> > The plotted image should be a logo of the project / department and I
> > like to add it on every plot - for esthetical and descriptive reasons
>
> Here is a very rough addlogo() using pixmap:
>
> "addlogo" <- function(x, y, pixmap) {
> if (is.list(x)) {
> y <- x$y
> x <- x$x
> }
> else if (missing(y))
> stop("missing y")
> if (!is.numeric(x) || !is.numeric(y))
> stop("non-numeric coordinates")
> if ((nx <- length(x)) <= 1 || nx != length(y) || nx > 2)
> stop("invalid coordinate lengths")
> pixmap at bbox[1] <- x[1]
> pixmap at bbox[2] <- y[1]
> pixmap at bbox[3] <- x[2]
> pixmap at bbox[4] <- y[2]
> pixmap at cellres[1] <- (pixmap at bbox[3] - pixmap at bbox[1]) / pixmap at size[2]
> pixmap at cellres[2] <- (pixmap at bbox[4] - pixmap at bbox[2]) / pixmap at size[1]
> plot(pixmap, add=TRUE)
> invisible(pixmap)
> }
>
> which will work with locator() too. To maintain aspect, it shouldn't alter
> the relative cell resolutions, and should just use the new x or y, bur
> this is the general case. The handling of the location of the logo is
> copied & pasted from legend().
>
> Roger
>
> --
> Roger Bivand
> Economic Geography Section, Department of Economics, Norwegian School of
> Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
> Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
> e-mail: Roger.Bivand at nhh.no
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
--
Those are my principles, and if you don't like them... well, I have others.
-- Groucho Marx
More information about the R-help
mailing list