From pdalgd at gmail.com  Wed Nov 16 23:18:43 2011
From: pdalgd at gmail.com (peter dalgaard)
Date: Wed, 16 Nov 2011 23:18:43 +0100
Subject: [Rd] strange behavior from cex="*"
In-Reply-To: <4EC42D66.502@gmail.com>
References: <4EC42D66.502@gmail.com>
Message-ID: <1C6B85B4-9803-407B-83BB-19159CCB2778@gmail.com>


On Nov 16, 2011, at 22:38 , Ben Bolker wrote:

>  Someone inquired on StackOverflow about apparently non-deterministic
> graphics behaviour in R.  I noticed that they were using cex="*" and
> discovered some potentially weird behavior.

It can be reproduced much more simply (well, not the hang, but bad enough):

In a plain R application console (OSX Snow Leopard),

for (i in 1:100) plot(1:10,cex="*")

will _sometimes_ show big circles, indicating random data being picked up. 

The "cex" is by definition numeric, so you can't expect to be able to pass a character string, but the code should check.

> 
>   On repeated runs of the same code I can get different PNGs.  If I set
> the number of runs high enough, I seem to be able to get R to hang.
> If I do a single version plotting to an interactive graphics window I
> can get the point sizes to jump around as I resize the window (someone
> reported being able to reproduce that behaviour in the Windows GUI as well).
> 
>  This is clearly a user error, but non-deterministic behaviour (and
> hanging) are a little disturbing.
> 
>  I haven't had a chance yet to try to dig in and see what's happening
> but thought I would report to see if anyone else could reproduce/figure
> it out.
> 
>  Ben Bolker
> 
> 
> ########################
> ## n <- 100  ## hangs R
> 
> n <- 33
> 
> fn <- paste("tmp",seq(n),"png",sep=".")
> for (i in seq(n)) {
>    png(fn[i])
>    plot(1:10,1:10,cex="*");
>    dev.off()
> }
> 
> ff <- subset(file.info(fn),select=size)
> ff <- ff[!duplicated(ff$size),,drop=FALSE]
> table(ff$size)
> require(png)
> pngs <- lapply(rownames(ff),readPNG)
> 
> png.to.img <- function(x) matrix(rgb(x[,,1],x[,,2],x[,,3]),
>                                 nrow=dim(x)[1],ncol=dim(x)[2])
> 
> imgs <- lapply(pngs,png.to.img)
> 
> par(mfrow=c(2,2))
> lapply(imgs,function(x) {
>  plot(0:1,0:1,type="n",ann=FALSE,axes=FALSE)
>  rasterImage(x,0,0,1,1)
> })
> 
> #########################
> 
>> sessionInfo()
> R Under development (unstable) (2011-10-06 r57181)
> Platform: i686-pc-linux-gnu (32-bit)
> 
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
> 
> other attached packages:
> [1] glmmADMB_0.6.5 MASS_7.3-14    png_0.1-3
> 
> loaded via a namespace (and not attached):
> [1] grid_2.15.0     lattice_0.19-33 nlme_3.1-102    tools_2.15.0
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



[Rd] strange behavior from cex="*"
peter dalgaard