我怎样才能获得ggplots的“不平衡”网格?
通过grid.arrange
我可以在网格中排列多个ggplot
graphics,通过使用如下方法来实现多面板graphics:
library(ggplot2) library(grid) library(gridExtra)
然后生成一些ggplot2图
plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)
我怎样才能得到一个“不平衡”的2列布局,整个第一列的一个情节和第二列的三个情节? 我试着用grid.arrange
来绘制一个网格(比如plot5
,上面)和另一个plot,但是获得了一个“grid-of-grids”
Error in arrangeGrob(..., as.table = as.table, clip = clip, main = main, : input must be grobs!
更新:
感谢您的build议。 我将研究viewports
和grid
。 同时,感谢@DWin,“wq”包中的layOut
函数对于我的Sweave
文档中的编译图效果非常好:
更新2:
arrangeGrob
命令(如@baptistebuild议的)也很好,而且看起来非常直观 – 至less很容易改变两列的宽度。 它也有不需要`wq'包的好处。
例如下面是我的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}
产生以下输出:
顺便说一句,有人告诉我为什么“NA”出现?
grid.arrange
直接在设备上绘制; 如果你想把它和其他的网格对象结合起来,你需要像在
p = rectGrob() grid.arrange(p, arrangeGrob(p,p,p, heights=c(3/4, 1/4, 1/4), ncol=1), ncol=2)
编辑 (07/2015):v> 2.0.0你可以使用layout_matrix
参数,
grid.arrange(p,p,p,p, layout_matrix = cbind(c(1,1,1), c(2,3,4)))
我试图用网格计算出来,并认为我把它放下了,但最终失败了(虽然现在看我在下面的函数中的代码,我可以看到我真的很接近… 🙂
'wq'包有一个layOut
function,可以为你做到这一点:
p1 <- qplot(mpg, wt, data=mtcars) layOut(list(p1, 1:3, 1), # takes three rows and the first column list(p1, 1, 2), # next three are on separate rows list(p1, 2,2), list(p1, 3,2))
- GridView VS GridLayout在Android应用程序
- 在C#中sortingdataGridView列? (Windows窗体)
- Matplotlib:在其他graphics元素后面绘制网格线
- 什么是最好的Java库来网格/集群启用你的应用程序?
- 如何validation使用ng-repeatdynamic创build的input,ng-show(angular)
- WPF:具有列/行边距/填充的网格?
- 最佳dynamicJavaScript / JQuery Grid
- 如何使用Twitter Bootstraps网格系统在两列之间添加一行
- 不调用DependencyProperty getter / setter