[R] Colour filling in panel.bwplot from lattice

Rainer Hurling rhurlin at gwdg.de
Wed Nov 3 11:55:25 CET 2010


Am 03.11.2010 10:23 (UTC+1) schrieb Deepayan Sarkar:
> On Wed, Nov 3, 2010 at 4:11 AM, Dennis Murphy<djmuser at gmail.com>  wrote:
>> Hi:
>>
>> I don't know why, but it seems that in
>>
>> bwplot(voice.part ~ height, data = singer,
>> main = "NOT THE RIGHT ORDER OF COLOURS\n'yellow' 'blue' 'green' 'red'
>> 'pink' 'violet' 'brown' 'gold'",
>> fill=c("yellow","blue","green","red","pink","violet","brown","gold"))
>>
>> the assignment of colors is offset by 3:
>>
>> Levels: Bass 2 Bass 1 Tenor 2 Tenor 1 Alto 2 Alto 1 Soprano 2 Soprano 1
>> fillcol<- c("yellow","blue","green","red","pink","violet","brown","gold")
>>
>> In the above plot,
>>
>> yellow ->  Bass 2  (1)
>> blue ->  Tenor 1     (4)
>> green ->  Soprano 2  (7)
>> red ->  Bass 1 (10 mod 8 = 2)
>> pink ->  Alto 2 (13 mod 8 = 5)
>> etc.
>>
>> It's certainly curious.
>
> Curious indeed. It turns out that because of the way this was
> implemented, every 11th color was used, so you end up with the order
>
>> sel.cols<- c("yellow","blue","green","red","pink","violet","brown","gold")
>> rep(sel.cols, 100) [ seq(1, by = 11, length.out = 8) ]
> [1] "yellow" "red"    "brown"  "blue"   "pink"   "gold"   "green"  "violet"
>
> It's easy to fix this so that we get the expected order, and I will do
> so for the next release.

Thank you for this proposal. We are looking forward for the next release :-)

We frequently have to colour selected boxes to be able to compare 
special cases over different panels.

> Having said that, it should be noted that any vectorization behaviour
> in lattice panel functions is a consequence of implementation and not
> guaranteed by design (although certainly useful in many situations).
> In particular, it is risky to depend on vectorization in multipanel
> plots, because the vectorization starts afresh in each panel for
> whatever data subset happens to be in that panel, and there may be no
> relation between the colors and the original data.

Thank you for the warning.

> One alternative is to use panel.superpose with panel.groups=panel.bwplot:
>
> bwplot(voice.part ~ height, data = singer, groups = voice.part, panel
> = panel.superpose, panel.groups = panel.bwplot, fill = sel.cols)

This indeed works nice 'as a workaround'.

> -Deepayan

Thanks again for this wonderful package,
Rainer



More information about the R-help mailing list