I'm attempting to display multiple plots in my main panel in my Shiny app.
I am using the multiplot function from R cookbook
multiplot <- function(..., plotlist=NULL, file, cols=1, layout=NULL) {
library(grid)
# Make a list from the ... arguments and plotlist
plots <- 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 <- 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 <- as.data.frame(which(layout == i, arr.ind = TRUE))
print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row,
layout.pos.col = matchidx$col))
}
}
}
And then calling multiplot
multiplot(p1,p2,p3,p4,p5,p6, cols=1)
But it looks like it's trying to squish everything in to the main panel
Here is what my app looks like with only one plot
Here is my ui.R
shinyUI(fluidPage(
titlePanel("Baseball"),
sidebarLayout(
sidebarPanel(
selectInput(
"var", label = "Choose a group to visualize",
choices =c(Overall = "overall", Offense = "offense", Pitchers = "pitchers", Simpsons = "simpsons"),
selected = "offense")
),
mainPanel(
plotOutput("plotOffense")
)
)
)
)
Do I need to be using something instead of mainPanel that allows for more graphics to be placed in the browser?