[R] Odp: Multifactor boxplots
David Winsemius
dwinsemius at comcast.net
Fri Jul 29 15:41:46 CEST 2011
On Jul 29, 2011, at 8:05 AM, Petr PIKAL wrote:
> Hi
>
>>
>> Dear All
>>
>> I would like to produce interaction boxplots and this seems to work:
>>
>> par(mfrow=c(2,2))
>> A=sample(rnorm(50,50,10))
>> B=sample(rnorm(50,100,10))
>> Test=merge(A,B,by=0)#by=0 where 0 is the row.names
>> TreatA=(gl(2,50,100,labels=c("High","Low")))
>> TreatB=rep(gl(2,25,50,labels=c("High","Low")),2)
>> Newdata=data.frame(TreatA,TreatB,Test)
>>
>> bwplot(x~TreatA:TreatB,data=Newdata)
>>
>> However, I would prefer the X axis labels to be different, such that
> there
>> are two label rows (TreatA and TreatB) something like this:
>>
>> TreatA High High Low Low
>> TreatB High Low High Low
>>
>> any guidance on achieving this much appreciated.
>
> Combination of axes=FALSE
>
> boxplot(x~TreatA:TreatB,data=Newdata, axes=F)
>
> and following axis and mtext commands seems to do what you want
> axis(2)
> axis(1, at= 1:4,labels=c("H", "H", "L", "L"))
I didn't seem to get axes=FALSE to work the way I expected (or even
find it in boxplot or par documentation... oh, there it is in
plot.default) so also tried xaxt="n" and also tried to get the "over/
under" arrangement of the labels and "Treat"'s as specified:
boxplot(x~TreatA:TreatB,data=Newdata, xaxt="n")
axis(1, at= 1:4,labels=c("Treat A:High\nTreat B:High", "High\nLow",
"Low\nHigh", "Low\nLow"), padj=1 )
---End of answer---
<whine-mode on>
Now I have a question: If axes=FALSE is going to also suppress the
drawing of the box, shouldn't that be documented in the help page of
plot.default so that if someone (eventually) finds the right help page
they can develop the correct expectation? Yes, I can see that
frame.plot=axes is the default argument, but should we give the useR a
break and mention that in the Details?
And shouldn't the boxplot help page say that plot.default is
eventually called and give a link to it so that the available
graphical parameters are made known to the useR? Well, now that I
follow the ?bxp link I see that 'axes' is mentioned, but one is
further referred to ?plot.window which says _nothing_ about 'axes'.
But then in the code for bxp() I see that plot.default is not called
and that 'axes' are handled inside that function and nothing is passed
off to either plot.window or plot.default. <whine-mode off>
--
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list