[R] grid.arrange, grid.layout - legend, global y axis title
Johannes Radinger
JRadinger at gmx.at
Tue Nov 15 15:26:14 CET 2011
Hello,
I created several plot with ggplot2 dev mode.
Now I want to combine the plots in a grid
e.g. 2x2 with a fixed size of the output.
What I am doing at the moment is:
grid.newpage()
pushViewport(viewport(layout = grid.layout(nrow=2, ncol=2,
widths = unit(c(7.5,6.5), "cm"),
heights = unit(rep(5, 2), "cm"))))
print(plot1, vp = viewport(layout.pos.row = 1, layout.pos.col = 1))
print(plot2, vp = viewport(layout.pos.row = 1, layout.pos.col = 2))
print(plot3, vp = viewport(layout.pos.row = 2, layout.pos.col = 1))
print(plot4, vp = viewport(layout.pos.row = 2, layout.pos.col = 2))
This is working well so far.
The y-axis are for all plots the same so I'd like to have a global y-axis title on the left side. How can that be done using my approach?
I also would like to add a global vertical legend for my plots below all plots.
The legend should show the to different symbols (same as for the single plots (ggplot2)). I also don't know how to do that.
I know that there is the function grid.arrange which can do both things but this isn't working because I am in the dev mode of ggplot. Then I get the error: Error: could not find function "ggplotGrob.
I load my libraries the following way:
1) import data
2) load library(gridExtra)
3) load library(devtools)
dev_mode(TRUE)
library(ggplot2)
library(reshape2)
4) produce plots
5) arrange the plots.
So what is the best way to proceed?
Should I stay with the grid.layout approach and can I get there a global legend and a global y axis title?
Or how can I use grid.arrange, define the position of the gobal legend and set the single plot to a fixed size?
I hope that wasn't to complicated...
/Johannes
--
More information about the R-help
mailing list