Dear R-helpers,
I'm trying to combine two box plots having two dependent variables:
var1- Orange.area and
var2- Iridescent.area;
two independent categorical factors (each has two levels - 'High' &
'Low'):
fact1- Quantity
fact2- Quality
the data frame (df) is:
Quantity Quality Orange.area Iridescent.area
1 High High 8.240 12.550
2 High Low 12.690 10.470
3 High High 10.340 4.350
4 High Low 11.430 8.890
5 High High 6.203 6.809
6 Low Low 1.750 7.040
7 Low High 6.060 4.930
8 Low Low 5.630 5.980
9 Low High 6.540 5.360
10 Low Low 8.458 4.710
I tried to plot them with the following codes:
library(ggplot2)
library(gridExtra)
## 1st plot
p1 <- qplot(as.factor(Quantity), Orange.area, data=df, geom =
"boxplot",
fill= Quality)
p1 <-p1 + geom_boxplot() +scale_fill_manual(values = c("dark grey",
"white"), legend="FALSE")
p1 <- p1 + labs(x="Quantity", y="Orange area")
p1 <- p1 + stat_summary(fun.y = mean, geom = "point", color =
"black",
aes(group=Quality))
p1 <- p1 + stat_summary(fun.y = mean, geom = "line", aes(group =
Quality))
p1 <- p1 +theme_bw()+
theme(axis.line = element_line(colour = "black"),
strip.text.x = element_blank(),# remove top level title (high and
low)
strip.background = element_blank(),# remove top level background
panel.grid.major = element_blank(),# remove grid line within the
plot
panel.grid.minor = element_blank(),
panel.border = element_blank())
## 2nd plot
p2 <- qplot(as.factor(Quantity), Iridescent.area, data=df, geom
"boxplot", fill= Quality)
p2 <-p2 + geom_boxplot() +scale_fill_manual(values = c("dark grey",
"white"))
p2 <- p2 + labs(x="Quantity", y="Iridescent area")
p2 <- p2 + stat_summary(fun.y = mean, geom = "point", color =
"black",
aes(group=Quality))
p2 <- p2 + stat_summary(fun.y = mean, geom = "line", aes(group =
Quality))
p2 <- p2 +
theme_bw()+
theme(axis.line = element_line(colour = "black"),
strip.text.x = element_blank(),# remove top level title (high and
low)
strip.background = element_blank(),# remove top level background
panel.grid.major = element_blank(),# remove grid line within the
plot
panel.grid.minor = element_blank(),
panel.border = element_blank())
## combining two plots as one plot
sidebysideplot <- grid.arrange(p1, p2, ncol=2)
and got the plot which sueezed the 2nd plot having legend on its middle of
the right side.
But I want to have the legend on the top right corner with any change of
the 2nd plot (both plots should be the same size).
Is there any help? Any effort will be appreciated...
Cheers,
Moshi
--
MD. MOSHIUR RAHMAN
PhD Candidate
School of Animal Biology/Zoology (M092)
University of Western Australia
35 Stirling Hwy, Crawley, WA, 6009
Australia.
Mob.: 061-425205507
[[alternative HTML version deleted]]