On 10/18/07, Jim Lemon <[EMAIL PROTECTED]> wrote: > Sergey Goriatchev wrote: > > Hello, > > > > Let me describe what I have and what I want to do: > > > > I have two (7x6) matrices (call them A and B) that have same row and > > column names (rows=species, columns=variables) but contain numerical > > values that differ (same experiment done twice and values calculated > > and put in different matrices). > > ... > > But this is not very effective. What I want to do is to combine the > > two similar barplots for each experiment into one. So, for each > > species I create just one barplot where I plot 6 clusters each > > consisting of 2 bars, one bar for same varibale but different > > experiment. I want to put the values as text at the top of each bar > > and below each cluster I want to put the name of the variable (they > > are the same for each experiment, remember). > > > Hi Sergey, > See if this does what you want: > > library(plotrix) > mat1<-matrix(rnorm(42,3),nrow=7) > mat2<-matrix(rnorm(42,3),nrow=7) > colnames(mat1)<-colnames(mat2)<- > c("First","Second","Third","Fourth","Fifth","Sixth") > rownames(mat1)<-rownames(mat2)<- > c("Fextus decrepitans","Gryphon laxus", > "Domus flaccidus","Cogitans prostrata","Osmia putrescens", > "Aria excruciata","Pestis ubiquitus")
I'm a strong believer in always storing data in data.frames, so the first thing I'd do with your data is put it in that form. This also has the nice side effect of making the data self-documenting. I'd process Jim's example data as follows: library(reshape) df1 <- melt(mat1) df2 <- melt(mat2) names(df1) <- names(df2) <- c("species", "variable", "value") df1$expt <- "one" df2$expt <- "two" df <- rbind(df1, df2) It's then easy to plot the data with lattice or ggplot2. The examples below use ggplot2. library(ggplot2) qplot(variable, value, data=df, geom="bar", stat="identity", fill=expt, position="dodge", facets = . ~ species) Another option would be to use a dot plot instead - this has a much higher data-ink ratio, and is arguably more correct when the values don't represent sums. qplot(variable, value, data=df, colour=expt, facets = . ~ species) You could also connect the two experiments with a line: qplot(variable, value, data=df, colour=expt, facets = . ~ species) + geom_line(aes(group=variable), colour="grey") If you really want the labels (and I wouldn't recommend it - it's a graph not a table), you can add the following line to either of the above calls: + geom_text(aes(label = formatC(value, digits=2), vjust = 0)) If you want the axes flipped (so it's easier to read the text labels), add: + coord_flip() Regards, Hadley -- http://had.co.nz/ ______________________________________________ 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.