[R] How to colorize the panel backgrounds of pairs()?

Marius Hofert marius.hofert at math.ethz.ch
Fri Mar 2 17:57:14 CET 2012


Okay, one simply has to use label.pos=0.5 in pairs() to get the correct behavior.


On 2012-03-02, at 09:10 , Marius Hofert wrote:

> 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.



More information about the R-help mailing list