[R] par(new = TRUE) - overplotting

Antje antje.niederlein at yahoo.de
Wed Oct 8 18:12:35 CEST 2008


Hi Dieter,

thanks a lot for looking inside my code though it was not executable...(sorry 
for that).
Finally, I found a rather stupid mistake. My original code did not use the 
variable i for the second boxplot. So the second round actually plotted two 
different data at the two calls...
so it had nothing to do with the par(new...)

here some executable bug-free code :-)



mydata <- list(rnorm(100, mean=0.5, sd=0.1), rnorm(100, mean=0.7, sd=0.15))

lapply(c(1,2), FUN=function(i) {
	windows(7,7)
	use_col <- c("blue")
	gridlines <- seq(0.1,2.0,0.1)
	par(mar=c(12, 4, 5, 2))
	bpars <- list(yaxt = "n", las = 2 )
	boxplot(data.frame(mydata[[i]]), col=use_col, pars= bpars )
	abline(h = gridlines, col="lightgray", lty=2)
	abline(h = 1, col="red", lwd=3)
	par(new=TRUE)
	boxplot(data.frame(mydata[i]), col=use_col, pars= bpars)
})

ciao,
Antje





Dieter Menne schrieb:
> Antje <niederlein-rstat <at> yahoo.de> writes:
> 
>> I want to create some boxplots (as png) within an lapply method. To get 
>> nice  gridlines behind the boxplot, I plotted it twice and therefore I 
>> set par(new=TRUE).
>> This works nicely for the first plot but the second does plot on the 
>> first plot 
>> too and creates a mess...
>> How can I force to start with a blank plot again???
>>
>> lapply(c(1,2), FUN=function(i) {
>> 	png(filename = "test.png", width = 450, height = 600)
>> 	gridlines <- seq(0.1,2.0,0.1)
>> 	par(mar=c(12, 4, 5, 2))
>> 	bpars <- list(yaxt = "n", las = 2 )
>> 	boxplot(mydata[i], pars= bpars )
>> 	abline(h = gridlines, col="lightgray", lty=2)
>> 	abline(h = 1, col="red", lwd=3)
>> 	par(new=TRUE)
>> 	boxplot(mydata[i], pars= bpars, main = "title")
>> 	dev.off()
>> })
> 
> I do not fully understand what you want to do, but in each case you overwrite
> your files. Try something like:
> 
> png(filename = paste("test",i,".png"), width = 450, height = 600)
> 
> and think over again why you need the par(new=TRUE). And please, make your
> examples self-running, for example by adding
> 
> mydata = rnorm(100)
> 
> even if you probably have more complex data.
> 
> Dieter
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list