Re: [R] Lattice - parallel: xlim and adding lines

From: Sundar Dorai-Raj <sundar.dorai-raj_at_pdf.com>
Date: Wed 30 Mar 2005 - 09:04:14 EST

T.A.Wassenaar wrote on 3/29/2005 4:17 PM:
>
> Hi Sundar,
>
> Thanks for the reply. And, oops, the panel.parallel.new shouldn't be in
> there. That is a revised panel function to color according to a group.
> As with strange, that would generally be 'not-expected', i.e., in the
> present case, not having an x-axis running from -1 to 1 for all ranges.
> I would at least expect to have zero in the middle, but that is not so.

> Excuse me for not expanding 'strange' previously. I have read the
> guide.., some while ago.
>
> Thanks again,
>
> Tsjerk
>

Tsjerk,

 From panel.parallel, the x values are being scaled to c(0, 1)

x <- (as.numeric(z[subscripts[i], , ]) - llim)/dif

This puts the "Min" at x == 0 and the "Max" at x == 1 on the x-axis. If you want to leave it in the raw scale of the x, you will have to write your own panel and prepanel function, or simply determine what xlim = c(-1, 1) is in the scaled coordinates.

E.g.

lin.scale <- function(x, a = 0, b = 1, new.x = NULL) {

   slope <- (b - a)/diff(range(x))
   inter <- a - slope * min(x)
   if(is.null(new.x)) {
     inter + slope * x
   } else {
     inter + slope * new.x
   }
}
xlim <- lin.scale(range(iris[1:4]), new.x = c(-2, 10)) parallel(~ iris[1:4] | Species, iris, xlim = xlim)

The next question would be how to set the x labels to something other than "Min" and "Max" because (to me) they appear to be hard-coded in parallel. I will leave that question to Deepayan.

As for adding lines, you will also have to scale your reference line to the panel units. For my example, each panel has a x range of c(0, 1) and a y range of c(1, 4). E.g.

my.panel.parallel <- function(z, subscripts, col = superpose.line$col,

                               lwd = superpose.line$lwd,
                               lty = superpose.line$lty, ...) {
   superpose.line <- trellis.par.get("superpose.line")    panel.abline(v = 0.5, lwd = 3)
   panel.parallel(z, subscripts, col, lwd, lty, ...) }

HTH, --sundar

> On Tue, 29 Mar 2005 14:42:05 -0600
> Sundar Dorai-Raj <sundar.dorai-raj@pdf.com> wrote:
>

>>
>>
>> T.A.Wassenaar wrote on 3/29/2005 2:17 PM:
>>
>>>
>>> Hi,
>>>
>>> I'm trying to set the minimum and maximum in a parallel plot, but 
>>> trying xlim=c(-1,1) gives strange results. Am I missing something? 
>>> The call I give is:
>>>
>>> parallel(~X[,c(6,9,12,15,18)]|X$ff,X,panel=panel.parallel.new,groups=X$protein,layout=c(3,1),xlim=c(-1,1)) 
>>>
>>>
>>> Besides, I would like to add a reference line to the plot, but can't 
>>> find how to do that.
>>>
>>> I hope someone can give me a hint or two.
>>>
>>> Thanks in advance,
>>>
>>> Tsjerk
>>>
>>
>> Tsjerk,
>>
>> I don't think you'll get much help without knowing, first, what 
>> "strange" means, and second, what "panel.parallel.new" does. And you 
>> can always add a reference line by using panel.abline in your panel 
>> function.
>>
>> And, from the signature:
>>
>> PLEASE do read the posting guide! 
>> http://www.R-project.org/posting-guide.html
>>
>> --sundar
>>
>> ______________________________________________
>> R-help@stat.math.ethz.ch mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide! 
>> http://www.R-project.org/posting-guide.html

>
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html


R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Mar 30 09:16:20 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:30:57 EST