Hi,
I have data that looks like this:
ASA1 ASA2 C1_C2
C M 9.0225
S S 2.4315
M C 3.4894
M S 4.5282
C M 1.3183
C S 1.3735
S C 1.0488
S M 7.948
M C 4.5827
I need to plot Boxplots for a given ASA1 (either C,S, or M) with
respect to C1_C2. However, instead of one boxplot I want to plot three
boxplots for a given ASA1 value such that each sub-boxplot represent
the distribution for C1-C2 for each of the three possible values of
ASA2 (C,S or M). I want to show this subgroup with a single xtics
(either C, S or M) corresponding to the ASA1 value selected.
I tried to do it, but ending with the following error. I am not sure
how exactly I should build the object to plot as subgroup.
Error in axis(side = 1, at = 1:9, labels = c("C", "M", "S" :
'at' and 'labels' lengths differ, 9 != 3
In addition: Warning message:
In bxp(list(stats = c(1e-04, 2.82745, 6.0193, 10.5957, 22.2476, :
some notches went outside hinges ('box'): maybe set notch=FALSE
I would greatly appreciate any help in this matter.
Thank you.
-Kanu
This message has been checked for viruses but the contents of an attachment
may still contain software viruses, which could damage your computer system:
you are advised to perform your own checks. Email communications with the
University of Nottingham may be monitored as permitted by UK legislation.
boxplot in subgroups
3 messages · Pooja Jain, Annette Heisswolf
Hei,
the error message below just tells you that you have specified nine places along the axis where you want to have labels (i.e. at=1:9) but
obviously you have only specified three labels (i.e. labels = c("C","M","S")). Thus, R is complaining that there are not enough labels for
all positions. However, I guess from your description that you want to have only three labels below your plot, one for each group of three
boxes that share the same ASA1 value. Thus, you could for example do like this:
axis(side=1,at=c(2,5,8),labels=c("C","S","M"))
Then you would get the label always below the middle one of the three boxes of each group.
Now the boxes are, however, still distributed evenly across the plot, but in case you want to have those that belong to the same subgroup a
bit closer together, you can specify their position via the "at" option on the boxplot function (see ?boxplot).
An example with random data might look like this:
ASA1=factor(rep(c("C","S","M"),each=100))
ASA2=factor(rep(c("C","S","M"),100))
C1_C2=runif(300)
boxplot(C1_C2~ASA2*ASA1,xlim=c(0,12),at=c(1:3,5:7,9:11),xaxt="n")
axis(side=1,at=c(2,6,10),labels=c("C","S","M"))
See ?axis for further options, e.g. tcl=0 in case you don't want to have a tick at the axis at the position of the label.
Hope that helps,
Annette
Pooja Jain schrieb:
Hi,
I have data that looks like this:
ASA1 ASA2 C1_C2
C M 9.0225
S S 2.4315
M C 3.4894
M S 4.5282
C M 1.3183
C S 1.3735
S C 1.0488
S M 7.948
M C 4.5827
I need to plot Boxplots for a given ASA1 (either C,S, or M) with respect
to C1_C2. However, instead of one boxplot I want to plot three boxplots
for a given ASA1 value such that each sub-boxplot represent the
distribution for C1-C2 for each of the three possible values of ASA2
(C,S or M). I want to show this subgroup with a single xtics (either C,
S or M) corresponding to the ASA1 value selected.
I tried to do it, but ending with the following error. I am not sure how
exactly I should build the object to plot as subgroup.
Error in axis(side = 1, at = 1:9, labels = c("C", "M", "S" :
'at' and 'labels' lengths differ, 9 != 3
In addition: Warning message:
In bxp(list(stats = c(1e-04, 2.82745, 6.0193, 10.5957, 22.2476, :
some notches went outside hinges ('box'): maybe set notch=FALSE
I would greatly appreciate any help in this matter.
Thank you.
-Kanu
Annette Heisswolf Section of Ecology Department of Biology University of Turku 20014 Turku, Finland phone + 358 2 333 6006 fax + 358 2 333 6550 mail annette.heisswolf at utu.fi
Thank you very much Annette, With your help I can do exactly what I wanted to. Best wishes, -Pooja
On 26 Mar 2009, at 06:59, Annette Heisswolf wrote:
Hei,
the error message below just tells you that you have specified nine
places along the axis where you want to have labels (i.e. at=1:9)
but obviously you have only specified three labels (i.e. labels =
c("C","M","S")). Thus, R is complaining that there are not enough
labels for all positions. However, I guess from your description
that you want to have only three labels below your plot, one for
each group of three boxes that share the same ASA1 value. Thus, you
could for example do like this:
axis(side=1,at=c(2,5,8),labels=c("C","S","M"))
Then you would get the label always below the middle one of the
three boxes of each group.
Now the boxes are, however, still distributed evenly across the
plot, but in case you want to have those that belong to the same
subgroup a bit closer together, you can specify their position via
the "at" option on the boxplot function (see ?boxplot).
An example with random data might look like this:
ASA1=factor(rep(c("C","S","M"),each=100))
ASA2=factor(rep(c("C","S","M"),100))
C1_C2=runif(300)
boxplot(C1_C2~ASA2*ASA1,xlim=c(0,12),at=c(1:3,5:7,9:11),xaxt="n")
axis(side=1,at=c(2,6,10),labels=c("C","S","M"))
See ?axis for further options, e.g. tcl=0 in case you don't want to
have a tick at the axis at the position of the label.
Hope that helps,
Annette
Pooja Jain schrieb:
Hi,
I have data that looks like this:
ASA1 ASA2 C1_C2
C M 9.0225
S S 2.4315
M C 3.4894
M S 4.5282
C M 1.3183
C S 1.3735
S C 1.0488
S M 7.948
M C 4.5827
I need to plot Boxplots for a given ASA1 (either C,S, or M) with
respect to C1_C2. However, instead of one boxplot I want to plot
three boxplots for a given ASA1 value such that each sub-boxplot
represent the distribution for C1-C2 for each of the three possible
values of ASA2 (C,S or M). I want to show this subgroup with a
single xtics (either C, S or M) corresponding to the ASA1 value
selected.
I tried to do it, but ending with the following error. I am not
sure how exactly I should build the object to plot as subgroup.
Error in axis(side = 1, at = 1:9, labels = c("C", "M", "S" :
'at' and 'labels' lengths differ, 9 != 3
In addition: Warning message:
In bxp(list(stats = c(1e-04, 2.82745, 6.0193, 10.5957, 22.2476, :
some notches went outside hinges ('box'): maybe set notch=FALSE
I would greatly appreciate any help in this matter.
Thank you.
-Kanu
-- Annette Heisswolf Section of Ecology Department of Biology University of Turku 20014 Turku, Finland phone + 358 2 333 6006 fax + 358 2 333 6550 mail annette.heisswolf at utu.fi