- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是在 ggplot2 google 群组上交叉发布的
我的情况是我是working on a function输出任意数量的图(取决于用户提供的输入数据)。该函数返回 n 个图的列表,我想将这些图以 2 x 2 的形式排列。我正在努力解决以下同时发生的问题:
我当前的策略使用 gridExtra
包中的 grid.arrange
。它可能不是最佳的,特别是因为,这是关键,它完全不起作用。这是我的注释示例代码,尝试了三个图:
library(ggplot2)
library(gridExtra)
x <- qplot(mpg, disp, data = mtcars)
y <- qplot(hp, wt, data = mtcars)
z <- qplot(qsec, wt, data = mtcars)
# A normal, plain-jane call to grid.arrange is fine for displaying all my plots
grid.arrange(x, y, z)
# But, for my purposes, I need a 2 x 2 layout. So the command below works acceptably.
grid.arrange(x, y, z, nrow = 2, ncol = 2)
# The problem is that the function I'm developing outputs a LIST of an arbitrary
# number plots, and I'd like to be able to plot every plot in the list on a 2 x 2
# laid-out page. I can at least plot a list of plots by constructing a do.call()
# expression, below. (Note: it totally even surprises me that this do.call expression
# DOES work. I'm astounded.)
plot.list <- list(x, y, z)
do.call(grid.arrange, plot.list)
# But now I need 2 x 2 pages. No problem, right? Since do.call() is taking a list of
# arguments, I'll just add my grid.layout arguments to the list. Since grid.arrange is
# supposed to pass layout arguments along to grid.layout anyway, this should work.
args.list <- c(plot.list, "nrow = 2", "ncol = 2")
# Except that the line below is going to fail, producing an "input must be grobs!"
# error
do.call(grid.arrange, args.list)
正如我习惯做的那样,我谦卑地蜷缩在角落里,热切地等待比我聪明得多的社区的明智反馈。特别是如果我让这件事变得比需要的更加困难。
最佳答案
你就快到了!问题是 do.call 期望您的参数位于命名的 list 对象中。您已将它们放入列表中,但作为字符串,而不是命名列表项。
我认为这应该有效:
args.list <- c(plot.list, 2,2)
names(args.list) <- c("x", "y", "z", "nrow", "ncol")
正如 Ben 和 Joshua 在评论中指出的那样,我可以在创建列表时指定名称:
args.list <- c(plot.list,list(nrow=2,ncol=2))
或
args.list <- list(x=x, y=y, z=x, nrow=2, ncol=2)
关于r - 如何使用 grid.arrange 排列任意数量的 ggplot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6681145/
我想安排 3 个正方形 ggplots,其中一个较大,另外两个较小,与第一个相邻。 这是我的尝试: gg1 <- ggplot(mtcars,aes(x=hp,y=mpg))+ geo
我必须使用 gridExtra::grid.arrange 来绘制除彼此之外的多个图,因为我使用该包来创建图的拟合。 我必须使用 grid.arrange 为绘图创建一个标题。 现在我想将两者结合起来
可以合并Arrangement.spacedBy(16.dp)和 Arrangement.Center在 Row.horizontalArrangement ? 我想做的是将内容水平居中并设置默认间距
我不太明白单元测试中模式的安排部分和行为部分之间的区别。 Arrange ONLY 是否意味着对象的创建?为什么我们首先要将 Arrange 与 Act 部分分开,以及决定某物是否属于 Act 而不是
我通常使用 dplyr 中的 arrange() 函数对数据集进行排序,但它的行为方式我无法理解。我花了一点时间才弄清楚这个问题。我已经修复了我的代码并使用 order() 来做同样的事情,但现在我很
题目地址:https://leetcode.com/problems/beautiful-arrangement/description/ 题目描述 Suppose you have N inte
题目地址:https://leetcode.com/problems/arranging-coins/#/descriptionopen in new window 题目描述 Youhave a
从一个 data.frame 开始,我想创建其他几个具有不同顺序的。我会直接举个例子,因为我相信这样更容易理解我的疑惑。 data = data.frame(x1 = sample(1:100,20)
我正在尝试将脚注添加到 grid.arrange 图。我在这个可重复的例子中提出了我的想法: ) library(ggplot2) library(gridExtra) library(grid) l
我想使用ggplot2从列表中创建grid.arrange图的多图,但是在按行排列之前按列排列它们。 gg_list1 <- list(qplot(mpg, disp, data = mtcars),
我正在构建一个绘图组合(使用 ggplot2 创建)运行函数 grid.arrange . 虽然我已经完成了作文,我希望图不要太靠近边距 . 我知道对于其他类型的绘图,函数 par()允许修改这些距离
我正在使用 gridExtra 包 grid.arrange 函数组合多个 ggplot 图。 我这样做: p1= 2.0.0 的情况下,main 参数已重命名为 顶部。 关于从 grid.arran
我问了一个问题 HERE关于网格排列并得到了极好的反响。我现在想减少图之间的空间,但出现错误。首先,我展示了有效的代码,然后是错误代码(我尝试过的)。我实际上找不到 grid.arrange并且一直假
我一直在查看有关在自定义函数内向 dplyr 函数传递参数的帖子,但无法解决以下情况: 我创建了以下函数来获取数据帧的子集。 library(Lahman) top_leaders % d
我觉得我总是在问同一个问题的不同变体:( 我最近使用 do.call 函数在 grid.arrange 上显示了一个绘图+表格列表 library(grid) library(ggplot2) lib
我已经制作了一个类似于下面代码所描述的图,从而生成了发布的图像。我不知道如何将整个背景设置为与定义子图时使用的相同的“grey80”颜色。 IE。我想用相同的颜色对图之间和图例两侧的白色区域进行着色。
我似乎无法找到如何使用 grid.arrange 增加两个图之间的空间的解决方案。我没有找到如何继续的线索。我不想改变绘图的大小或类似的东西。 grid.arrange(plot1, plot2, n
我正在开发一个关于编辑距离的 Java 项目,即最小操作数(定义的三个操作中,请参阅 here 了解更多信息!)。我对 Java 完全陌生,它似乎是一种很棒的面向对象语言,但可能不像 Matlab 那
在这个 super 简单的代码中,我希望 dplyr 首先按我的分组变量(金发女郎)排列,然后按年龄排列,但它似乎根本没有考虑分组变量。我很确定这在过去对我有不同的影响。我想要(和期望)的是它会首先按
给你 N 个高度为 1…N 的方块。你可以用多少种方式将这些块排成一排,这样从左边看你只能看到 L 块(其余的被更高的块隐藏)而从右边看你只能看到 R 块?给出的示例 N=3, L=2, R=1只有一
我是一名优秀的程序员,十分优秀!