Is this what you have in mind? tmp <- data.frame(id=1:10, y1=sample(10), y2=sample(10)) tmp2 <- cbind(id=c(tmp$id, tmp$id), stack(tmp[,2:3])) barchart(values ~ id | ind, data=tmp2) If not, send an equally trivial example of what you want to the list and someone will send you an optimized set of statements for it.