For those that may have this question in the future, here are two solutions:
As suggested from David and Sarah,
One has to remove par function from defining screen splits, instead use
layout function.
For example:
layout(matrix(c(1,1,2,3),2,2,byrow=T))
which says, split the screen in 4 blocks, of them use block space 1 and
2 oriented by row for picture 1, and the two remaining blocks for
picture 2 and picture 3. Similarly, one can split the screen into 6, 8
blocks and so on by changing also how many blocks of space you want to
assign to a specific picture for example.
layout(matrix(c(1,1,1,2,3,4,5),2,3,byrow=T)) ## six splits, of those
first 3 belong to picture 1
layout(matrix(c(1,1,2,3,4,5,6,7),2,4,byrow=T)) ## 8 splits of those
first 2 belong to picture 1 and so on.
Dennis Murphey provided also another beautiful solution via ggplot2. See
following.
Thank you,
Aldi
On 5/3/2013 7:57 PM, Dennis Murphy wrote:
Hi:
Here are a couple of ways you could go using the ggplot2 and gridExtra
packages, but it requires that you rearrange your data.
ggplot2 prefers data frame input, so we convert the histogram data to
a simple data frame and apply a couple of tricks to get an appropriate
data frame for the box plot data.
# Cast x into a data frame
DF0 <- data.frame(x = rnorm(1000,mean=0,sd=1))
wheat1 = rnorm(100,mean=0,sd=1)
wheat2 = rnorm(150,mean=0,sd=2)
tomatos3 = rnorm(200,mean=0,sd=3)
tomatos4 = rnorm(250,mean=0,sd=4)
cucumbers5 <- rnorm(300,mean=0,sd=5)
cucumbers6 <- rnorm(400,mean=0,sd=6)
# commodity is defined so that products are paired
DF1 <- data.frame(
commodity = factor(rep(c("wheat", "tomatos", "cucumbers"), c(250, 450,
700))),
product = factor(rep(c("wheat1", "wheat2", "tomatos3", "tomatos4",
"cucumbers5", "cucumbers6"),
times = c(100, 150, 200, 250, 300, 400))),
value = c(wheat1, wheat2, tomatos3, tomatos4, cucumbers5, cucumbers6) )
library(ggplot2)
# Simple histogram with ggplot2
p0 <- ggplot(DF0, aes(x = x)) + geom_histogram()
# Paired box plots by commodity
p1 <- ggplot(DF1, aes(x = product, y = value)) +
geom_boxplot() +
facet_wrap( ~ commodity, scales = "free_x", ncol = 3)
# gridExtra lets you combine multiple grid graphics plots together
# (ggplot2 and lattice are both written in grid)
library(gridExtra)
grid.arrange(p0, p1, nrow = 2) # stack histogram on top of boxplots
grid.arrange(p0, p1, nrow = 1) # what you asked for
I prefer the former, but it's easy enough to fix the problems with the latter.
Dennis
On 5/3/2013 6:07 PM, David Winsemius wrote:
On May 3, 2013, at 3:21 PM, Sarah Goslee wrote:
Hi Aldi,
You might want
?layout
instead.
Indeed. In particular a matrix argument might be:
matrix(c(1,2,3, 4,4,4)
Sarah
On Fri, May 3, 2013 at 5:54 PM, Aldi Kraja <a...@wustl.edu> wrote:
Hmm,
I had a typo paste by mistake in my x vector
It has to be:
x<-rnorm(1000,mean=0,sd=1)
wheat1<-rnorm(100,mean=0,sd=1)
wheat2<-rnorm(150,mean=0,sd=2)
tomatos3<-rnorm(200,mean=0,sd=3)
tomatos4<-rnorm(250,mean=0,sd=4)
cucumbers5<-rnorm(300,mean=0,sd=5)
cucumbers6<-rnorm(400,mean=0,sd=6)
par(mfrow=c(1,2))
hist(x, main="Left screen OK")
boxplot(wheat1,wheat2,tomatos3,tomatos4,cucumbers5,cucumbers6)
I think you will need a separate call to boxplot for each grouping. The
`boxplot` function will nto be able to access the device specifications.
--
--------------------------------------------------------------------------------
Aldi T. Kraja, DSc, PhD a...@dsgmail.wustl.edu
Research Associate Professor of Genetics
Division of Statistical Genomics http://dsgweb.wustl.edu/aldi
Washington University School of Medicine, Phone:(314)362-2498
Fax:(314)362-4227
4444 Forest Park Blvd., Campus Box 8506 Saint Louis, MO, 63110
_______________________________________________________________________________
The materials contained in this e-mail are private and confidential and are the
property of the sender. If you are not the intended recipient, be advised that
any unauthorized use, disclosure, copying, distribution, or the taking of any
action in reliance on the contents of this information is strictly prohibited.
If you have received this e-mail transmission in error, please immediately
notify the sender.
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.