2017-03-12 776 views
2

全部 - 关于这个确切的主题还有其他几个问题,但没有一个能够解决我面临的问题。这是一个简单的代码片段。任何人都可以建议这里的问题是什么?gList中只允许使用grob

> grid.arrange(plot(rnorm(1000)),hist(rnorm(1000)), nrow=2, ncol=1) 
Error in gList(list(wrapvp = list(x = 0.5, y = 0.5, width = 1, height = 1,  : 
  only 'grobs' allowed in "gList" 
+1

@John Coleman是对的,基本图形不是'grobs'。如果你真的想使用'grid.arrange',你可以尝试在这个问题中使用'grab_grob'函数。 http://stackoverflow.com/questions/33826249/force-a-regular-plot-object-into-a-grob-for-use-in-grid-arrange –

回答

2

的问题是,plot()hist()是碱图形,但不网格或ggplot图形,因此它们不grobs(“GROB”是“网格图形对象”一个有些奇怪首字母缩写)。您可以找到等价的网格图或使用基本图形方法来堆积图。

你会做后者的方式:

> par(mfrow = c(2, 1)) 
> plot(rnorm(1000)) 
> hist(rnorm(1000)) #are you sure you want to make a hist of 1000 *different* random numbers? 
> par(mfrow = c(1, 1)) #reset this parameter 

输出:

enter image description here

你也可以考虑使用layout。请输入?layout了解详情。

+0

谢谢@John Coleman!最好的解释。没有我用这个规范的意图只是为了说明。我已经使用grid.arrange工作,但使用qplot绘制直方图。它现在工作了! – skafetaur

+0

@skafetaur我想那只是一个例子。在教授一个统计类时(我是一个交易的数学老师),我实际上使用了相当类似的例子,其中相同的一组随机数以不同的方式显示在堆积的地块中,所以你的例子让我觉得有点奇怪。我很欣赏R的图形功能,但是发现它被分成不同的不兼容软件包的方式有时令人困惑。寻找一个纯粹的grid.arrange解决方案可能是最好的,但是了解一些基本图形的方法来绘制矩阵图很好。 –