title: How to make ~30 plots look good in one view
body: <p>I'd like to plot 40 different plots in R.  How can I control the height and width of the plots so the x and y axis are readable?  It appears no matter what you set the hieght and width to the plots shrink in the plot viewport to sizes smaller than what you want.</p>
  
  <p>Here is a toy example with 26 plots. I am using the multi plot function here:  <a href="http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/" rel="nofollow noreferrer">http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/</a></p>
  
  <pre><code>PLOT_LIST= list()
  c &lt;-rep(letters[1:26], 1,each=26)
  x = rep(1:26,26)
  y = rep(1:26,26)
  d&lt;- data.frame(cbind(c,x,y))
  head(d)
  uniCat= as.character(unique(d[,1]))
  uniCat
  for (i in 1:length(uniCat)){
    #i=1
    temp= subset(d, c == uniCat[i] )
    PLOT_LIST[[i]]&lt;- ggplot(temp, aes(x=x, y=y),height = 200, width= =200) + geom_bar(stat="identity") + ggtitle( uniCat[i])
  }
  multiplot(plotlist=PLOT_LIST, cols= 4) 
  </code></pre>
  
  <p>Here you can see the output. The axis are unreadable. How can I fix the height and width so that it's consumable?height = 200, width= 200 does not seem to work. </p>
  
  <p>Thank you.
  <img src="https://i.stack.imgur.com/Ez5lU.png" alt="enter image description here"></p>
  
  <p>Here is the multiplot function:</p>
  
  <pre><code>multiplot &lt;- function(..., plotlist=NULL, file, cols=1, layout=NULL) {
    library(grid)
  
    # Make a list from the ... arguments and plotlist
    plots &lt;- c(list(...), plotlist)
  
    numPlots = length(plots)
  
    # If layout is NULL, then use 'cols' to determine layout
    if (is.null(layout)) {
      # Make the panel
      # ncol: Number of columns of plots
      # nrow: Number of rows needed, calculated from # of cols
      layout &lt;- matrix(seq(1, cols * ceiling(numPlots/cols)),
                       ncol = cols, nrow = ceiling(numPlots/cols))
    }
  
    if (numPlots==1) {
      print(plots[[1]])
  
    } else {
      # Set up the page
      grid.newpage()
      pushViewport(viewport(layout = grid.layout(nrow(layout), ncol(layout))))
  
      # Make each plot, in the correct location
      for (i in 1:numPlots) {
        # Get the i,j matrix positions of the regions that contain this subplot
        matchidx &lt;- as.data.frame(which(layout == i, arr.ind = TRUE))
  
        print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row,
                                        layout.pos.col = matchidx$col))
      }
    }
  }
  </code></pre>