[Rd] png() and image()

Wolfgang Huber huber at ebi.ac.uk
Fri Jul 21 09:20:34 CEST 2006


Hi Henrik,
this does not directly answer your question, but you might be able to 
use the function write.image in the package EBImage (Bioconductor) to 
write matrices into image files (e.g. PNG or JPEG), this might be more 
flexible and also faster than what you're trying to do.
  Best wishes
  Wolfgang
------------------------------------------------------------------
Wolfgang Huber  EBI/EMBL  Cambridge UK  http://www.ebi.ac.uk/huber

Henrik Bengtsson wrote:
> Hi,
> 
> I try to create PNG images of a certain size where each pixel
> intensity corresponds to exactly one probe signal in an Affymetrix
> array.  I try to use png() and image() with zero margins to do this.
> Example:
> 
> z <- matrix(1:15, nrow=45, ncol=30)
> png("large.png", height=nrow(z), width=ncol(z), bg="red")
> par(mar=c(0,0,0,0))
> image(z, col=gray.colors(16), axes=FALSE)
> dev.off()
> 
> z <- matrix(1:15, nrow=5, ncol=3)
> png("tiny.png", height=nrow(z), width=ncol(z), bg="red")
> par(mar=c(0,0,0,0))
> image(z, col=gray.colors(16), axes=FALSE)
> dev.off()
> 
> The problem is that on WinXP the very bottom row and the very right
> column of pixels in red.  Trying on Linux, it is only the very right
> column that is red.  See attached images (you might have to zoom in to
> see it).  I try to do this in R v2.3.1.  The same effect is seen if
> the jpeg() device is used.
> 
> When rescaling, the same effect is seen (the red border effect is one
> pixel wide), e.g.
> 
> z <- matrix(1:15, nrow=45, ncol=30)
> png("large5.png", height=5*nrow(z), width=5*ncol(z), bg="red")
> par(mar=c(0,0,0,0))
> image(z, col=gray.colors(16), axes=FALSE)
> dev.off()
> 
> I might be asking for something that is not supported, but is there a
> way around this?  It is a problem, because I wish to tile the images
> in an HTML page.
> 
> Thanks
> 
> Henrik
>



More information about the R-devel mailing list