image()
Prof Brian D Ripley
ripley@stats.ox.ac.uk
Mon, 15 Nov 1999 09:00:06 +0000 (GMT)
On Mon, 15 Nov 1999, Martin Maechler wrote:
> >>>>> On Sun, 14 Nov 1999 23:10:26 +0000 (GMT), Prof Brian D Ripley
> >>>>> <ripley@stats.ox.ac.uk> said:
>
> BDR> On Sat, 13 Nov 1999, Jonathan Rougier wrote:
> >> May I raise the issue of the behaviour of image()? In image()
> >> dim(z) is supposed to be c(length(x), length(y)). This suggests
> >> that the user is supplying the midpoints of the rectangles. For all
> >> but the outer rectangles this is true. The outer rectangles,
> >> however, are only displayed in half width. So it is not possible to
> >> show correctly an image plot of equally-spaced abscissa. I would
> >> hazard a guess that these kinds of plots make up the bulk of calls
> >> to image() either directly or after a simple transformation (eg
> >> starting with boundary values rather than midpoints).
> >>
> >> Can I suggest that the code for image() be modified to show full
> >> rectangles for all values on the basis that x and y are midpoints?
> >> According to my code for R (which is a bit out of date!) the minimum
> >> change would require 4 lines to be modified in the function do_image
> >> of plot3d.c. The alternative, which I think would be more
> >> transparent, would be to call the function do_image with boundary
> >> values having previously made the appropriate calculations in
> >> image() according to whether midpoints or boundary values are
> >> supplied. Something like this happens in S+ (although not very
> >> transparently!).
>
> BDR> I needed this in hurry this weekend for some fMRI plots. I've
> BDR> altered image so that if z is m x n, x can be of length m or m+1
> BDR> and y of length n or n+1. If x is of length m it supplies the
> BDR> midpoints, if of length m+1 it supplies the boundaries of the
> BDR> cells. (All S compatible.) The internal call is made with the
> BDR> boundary values. The outer cells are plotted in full width.
>
> Excellent, thank you!
>
> BDR> The one change is if m=1 or n=1. I reckon that is an error, but S
> BDR> and R previously filled the whole width. Does anyone want that
> BDR> behaviour?
>
> yes, I do.
> - If I remember properly, I even spent an hour or so to make this work in R:
> When I was porting the wavethresh package,
> one of the multiresolution plots didn't work in R, first, because image()
> didn't work for 1x1 images.
>
> - Also, for the matter of completeness and consistency, I think this just
> should work.
>
> BDR> At present those cases are an error.
>
OK, I know how to do it and will implement it soon (but probably not
today).
--
Brian D. Ripley, ripley@stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272860 (secr)
Oxford OX1 3TG, UK Fax: +44 1865 272595
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._