[R] Colour filling in panel.bwplot from lattice

Rainer Hurling rhurlin at gwdg.de
Tue Nov 2 19:32:16 CET 2010


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.

The dots should remain uncoloured ...

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


>> Thanks in advance,
>> Rainer Hurling
>
> David Winsemius, MD
> West Hartford, CT



More information about the R-help mailing list