[R] Colour filling in panel.bwplot from lattice

David Winsemius dwinsemius at comcast.net
Tue Nov 2 20:08:09 CET 2010


On Nov 2, 2010, at 2:32 PM, Rainer Hurling wrote:

> On 02.11.2010 19:08 (UTC+1), David Winsemius wrote:
>> On Nov 2, 2010, at 1:19 PM, Rainer Hurling wrote:
>>
>>> Inspired by colouring the dots of box-whisker plots I am trying to
>>> also fill the boxes (rectangles) with different colours. This seems
>>> not to work as I expected.
>>>
>>> Looking at the help page of panel.bwplot it says: 'fill - color to
>>> fill the boxplot'. Obviously it is only intended to fill all boxes
>>> with only one colour?
>>>
>>> Nevertheless the following example shows, that 'fill' from
>>> panel.bwplot is able to work with more than one colour. But this  
>>> only
>>> works with one colour or multiples of 5 colours:
>>>
>>>
>>> -------------------------------------------------
>>> bp1 <- bwplot(voice.part ~ height, data = singer, main="1 color  
>>> works",
>>> panel = function(...) {
>>> panel.bwplot(col=c("yellow"),
>>> fill=c("yellow"), ...)
>>> })
>>>
>>> bp2 <- bwplot(voice.part ~ height, data = singer, main = "3 colors  
>>> do
>>> NOT work",
>>> panel = function(...) {
>>> panel.bwplot(col=c("yellow","blue","green"),
>>> fill=c("yellow","blue","green"), ...)
>>> })
>>>
>>> bp3 <- bwplot(voice.part ~ height, data = singer, main = "5 colors  
>>> do
>>> work",
>>> panel = function(...) {
>>> panel.bwplot(col=c("yellow","blue","green","pink","red"),
>>> fill=c("yellow","blue","green","pink","red"), ...)
>>> })
>>>
>>> plot(bp1, split=c(1,1,1,3))
>>> plot(bp2, split=c(1,2,1,3), newpage=FALSE)
>>> plot(bp3, split=c(1,3,1,3), newpage=FALSE)
>>> -------------------------------------------------
>>>
>>> Is there any chance to use more than one filling colour correctly?
>>
>
> Thanks for answering.
>
>> You have eight boxes to fill and 8 dots to color. You can either  
>> supply
>> 8 distinct colors or you can supply some lesser number and they  
>> will be
>> recycled across the entire 8 boxes and dots. What you cannot do ( and
>> expect to see the dots against the fill background) is plot the  
>> dots as
>> the same colors as the fill.
>
> It was not my intention to get the dots coloured in the same colour  
> as the boxes. Instead I am looking for a method to fill the boxes  
> with a predefined set of different colours (from a color vector). As  
> far as I can see this is only possible for one colour and multitudes  
> of five colours.

Huh? My example used 4 colors. It should have worked with eight colors  
as well. There are eight groups and

>
> The dots should remain uncoloured ...

Then leave out the col= argument (assuming uncolored means black.)

>
>> This will let you see all colors of dots and fill with only 4 colors
>> because I set it up so there was no two identical colors in teh  
>> sequence
>> of dots and fill during hte reculing:
>>
>> bp4 <- bwplot(voice.part ~ height, data = singer, main = "5 colors do
>> work",
>> panel = function(...) {
>> panel.bwplot(col=rev(c("yellow","blue","green","pink")),
>> fill=c("yellow","blue","green","pink"), ...)
>> })
>
> In your example you can see that the dots colors are painted in the  
> right (reversed) order, the boxes are painted as sequence  
> c("yellow","pink","green","blue") instead of  
> c("yellow","blue","green","pink").
>
> I do not understand how to turn over a given order and with a given  
> count of colours to the boxes.

See if this example using selected colors() works to make it clearer:

 > colors()[(2:9)*10]
[1] "bisque1"     "blue4"       "burlywood3"  "chartreuse3" "coral3"
[6] "cyan2"       "darkgray"    "darkorange"


bp5 <- bwplot(voice.part ~ height, data = singer, main = "5 colors do  
work",
              panel = function(...) {
                panel.grid(v = -1, h = 0)
                panel.bwplot(fill=colors()[(2:9)*10], ...)
       })

bp5

(Needed to avoid the first colors() because they were mostly variants  
of "white".
 > colors()[1:8]
[1] "white"         "aliceblue"     "antiquewhite"  "antiquewhite1"
[5] "antiquewhite2" "antiquewhite3" "antiquewhite4" "aquamarine"
>
>
>>> Thanks in advance,
>>> Rainer Hurling
>>

-- 
David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list