[R] Help with multiple barplots

Rui Barradas ruipbarradas at sapo.pt
Thu Jan 31 17:36:45 CET 2013


Maybe the following will help.

layout(matrix(c(1,2,3,0,4,5,6), c(1,6)))

Note the zero. It reserves space but no graph is put there.

There is an error in your code, you plot twice guns/gender. I think the 
second is meant to be guns/age.
Also, you can do those 6 barplot instructions like this:

lapply(c("gender", "age"), function(y) {
	lapply(c("guns", "crime", "climate"), function(x)
		barplot(prop.table(table(dat[[x]], dat[[y]]), 2)))})

Hope this helps,

Rui Barradas

Em 31-01-2013 15:42, Simon Kiss escreveu:
> Hello: I need to create a six barplots from data that looks pretty close to what appears below. There are two grouping variables (age and gender) and three dependent variables for each grouping variables.  I'm not really familiar with trellis graphics, perhaps there is something that can do what I need there, i don't know.
> The thing is: I *need* these to appear on one row, with some way of differentiating between the three barplots of one grouping variable and the three from the other grouping variable.  It's for a grant application and space is at a premium.  The width of everything can be about 7 inches wide and the height maybe 2 to 2.5 inches. I also need an outer margin to place a legend.  I can do this with the following using the layout command, but I cannot figure out a nice way to differentiate the two groups of variables.  I'd like to find a way to put a little bit of space between the three from one grouping variable and the three from another grouping variable.
> If anyone has any thoughts, I'd be very grateful. Yours truly, Simon J. Kiss
> ###Random Data
> crime<-sample(c('agree' ,'disagree'), replace=TRUE, size=100)
> guns<-sample(c('agree','disagree'), replace=TRUE, size=100)
> climate<-sample(c('agree', 'disagree'), replace=TRUE, size=100)
> gender<-sample(c('male','both' ,'female'), replace=TRUE, size=100)
> age<-sample(c('old', 'neither', 'young'), replace=TRUE, size=100)
> dat<-as.data.frame(cbind(crime, guns, climate, gender, age))
> ###Code I'm working with now
> layout(matrix(c(1,2,3,4,5,6), c(1,6)))
> barplot(prop.table(table(dat$guns, dat$gender), 2))
> barplot(prop.table(table(dat$crime, dat$gender), 2))
> barplot(prop.table(table(dat$climate, dat$gender), 2))
> barplot(prop.table(table(dat$guns, dat$gender), 2))
> barplot(prop.table(table(dat$crime, dat$age), 2))
> barplot(prop.table(table(dat$climate, dat$age), 2))
> ______________________________________________
> R-help at 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.

More information about the R-help mailing list