Dear expeRts, I would like to colorize the backgrounds of a pairs plot according to the respective panel number. Here is what I tried (without success): count <- 0 mypanel <- function(x, y, ...){ count <<- count+1 bg. <- if(count %in% c(1,4,9,12)) "#FDFF65" else NA points(x, y, cex=0.5, bg=bg) } U <- matrix(runif(4*500), ncol=4) pairs(U, panel=mypanel) I also tried to set par(bg=bg.) before the call to points(), but that didn't work either. The only thing I found is that "bg=" can be used to fill certain plot symbols, but I would like to colorize the background of each panel, not the drawn circles. Cheers, Marius
par('bg') is not what you are looking for - it will set the bg of the whole graphic device, not panels. I think you want: count <- 0 mypanel <- function(x, y, ...){ count <<- count+1 ll<- par('usr') if(count %in% c(1,4,9,12)) bg<- "#FDFF65" else bg<- 'transparent' rect(ll[1],ll[3],ll[2],ll[4],col=bg) points(x, y, cex=0.5) } Cheers On Thu, Mar 1, 2012 at 4:49 PM, Marius Hofert <marius.hofert at math.ethz.ch> wrote:> Dear expeRts, > > I would like to colorize the backgrounds of a pairs plot according to the respective panel number. Here is what I tried (without success): > > count <- 0 > mypanel <- function(x, y, ...){ > ? ?count <<- count+1 > ? ?bg. <- if(count %in% c(1,4,9,12)) "#FDFF65" else NA > ? ?points(x, y, cex=0.5, bg=bg) > } > > U <- matrix(runif(4*500), ncol=4) > pairs(U, panel=mypanel) > > I also tried to set par(bg=bg.) before the call to points(), but that didn't work either. The only thing I found is that "bg=" can be used to fill certain plot symbols, but I would like to colorize the background of each panel, not the drawn circles. > > Cheers, > > Marius > > ______________________________________________ > 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.
Dear Ilai, I tried to also adjust the diagonal panels. However, the variable names are not positioned correctly anymore. Do you know a solution? Cheers, Marius count <- 0 mypanel <- function(x, y, ...){ count <<- count+1 bg <- if(count %in% c(1,4,9,12)) "#FDFF65" else "transparent" ll <- par("usr") rect(ll[1], ll[3], ll[2], ll[4], col=bg) points(x, y, cex=0.5) } mydiag.panel <- function(x, ...){ ll <- par("usr") rect(ll[1], ll[3], ll[2], ll[4], col="#FDFF65") } U <- matrix(runif(4*500), ncol=4) pairs(U, panel=mypanel, diag.panel=mydiag.panel) Marius Hofert <marius.hofert at math.ethz.ch> writes:> Indeed, precisely what I was looking for. Many thanks, Ilai. > > ilai <keren at math.montana.edu> writes: > >> par('bg') is not what you are looking for - it will set the bg of the >> whole graphic device, not panels. I think you want: >> count <- 0 >> mypanel <- function(x, y, ...){ >> count <<- count+1 >> ll<- par('usr') >> if(count %in% c(1,4,9,12)) bg<- "#FDFF65" >> else bg<- 'transparent' >> rect(ll[1],ll[3],ll[2],ll[4],col=bg) >> points(x, y, cex=0.5) >> } >> >> Cheers >> >> On Thu, Mar 1, 2012 at 4:49 PM, Marius Hofert >> <marius.hofert at math.ethz.ch> wrote: >>> Dear expeRts, >>> >>> I would like to colorize the backgrounds of a pairs plot according to the >>> respective panel number. Here is what I tried (without success): >>> >>> count <- 0 >>> mypanel <- function(x, y, ...){ >>> ? ?count <<- count+1 >>> ? ?bg. <- if(count %in% c(1,4,9,12)) "#FDFF65" else NA >>> ? ?points(x, y, cex=0.5, bg=bg) >>> } >>> >>> U <- matrix(runif(4*500), ncol=4) >>> pairs(U, panel=mypanel) >>> >>> I also tried to set par(bg=bg.) before the call to points(), but that didn't >>> work either. The only thing I found is that "bg=" can be used to fill certain >>> plot symbols, but I would like to colorize the background of each panel, not >>> the drawn circles. >>> >>> Cheers, >>> >>> Marius >>> >>> ______________________________________________ >>> 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.
Reasonably Related Threads
- Lattice: How to color the data points in splom() according to the panel they are plotted?
- Seed in 'parallel' vignette
- Why is format(10000, big.mark = "\\,") not 10\,000?
- Quiz: Who finds the nicest form of X_1^\prime?
- How to efficiently compare each row in a matrix with each row in another matrix?