Com grid.arrange
, posso organizar várias ggplot
figuras em uma grade para obter uma figura de vários painéis usando algo como:
library(ggplot2)
library(grid)
library(gridExtra)
gerar alguns gráficos ggplot2, então
plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)
Como posso obter um layout 'desequilibrado' de 2 colunas com um gráfico em toda a primeira coluna e três gráficos na segunda coluna? Eu brinquei com uma abordagem de 'grade de grades' tentando usar grid.arrange
para traçar uma grade (por exemplo plot5
, acima) contra outra trama, mas obtive:
Erro em layGrob (..., as.table = as.table, clip = clip, main = main,: input deve ser grobs!
Atualizar:
Obrigado pelo conselho. Vou examinar viewports
e grid
. Nesse ínterim, graças a @DWin, a layOut
função no pacote 'wq' funcionou muito bem para a figura de compilação em meu Sweave
documento:
Atualização 2:
O arrangeGrob
comando (como sugerido por @baptiste) também funciona bem e parece muito intuitivo - pelo menos foi fácil alterar a largura das duas colunas. Também tem a vantagem de não exigir o pacote `wq '.
por exemplo, aqui está o código do meu arquivo Sweave:
<<label=fig5plot, echo=F, results=hide>>=
plot5<-grid.arrange(plot4, arrangeGrob(plot1, plot2, plot3, ncol=1),
ncol=2, widths=c(1,1.2))
@
\begin{figure}[]
\begin{center}
<<label=fig5,fig=TRUE,echo=T, width=10,height=12>>=
<<fig5plot>>
@
\end{center}
\caption{Combined plots using the `arrangeGrob' command.}
\label{fig:five}
\end{figure}
que produz a seguinte saída:
BTW, alguém me diga por que o '> NA' aparece?
grid
. Veja também o livro ggplot2 de Hadley, Seção 8.4.2.
grid.arrange
pode ser usado com viewports aninhadas usando seu companheiro arrangeGrob
(essencialmente retornando a gTree
), como no exemplo que dei abaixo.
plot5
não é necessária, pois grid.arrange
não retorna nada (NULL). Se você quiser salvar o grob resultante, use arrangeGrob
novamente (e grid.draw
para exibi-lo).
grid.arrange
pode não ser flexível o suficiente (pesquisar stackoverflow para "[r] janela de visualização em grade")