gpt4 book ai didi

r - 使用 gridExtra 排列 GGally 图?

转载 作者:行者123 更新时间:2023-12-04 09:06:57 26 4
gpt4 key购买 nike

我想安排我的ggpairsarrangeGrob 一起绘制:

library(GGally)
library(gridExtra)

df <- structure(list(var1 = 1:5, var2 = 4:8, var3 = 6:10), .Names = c("var1", "var2", "var3"), row.names = c(NA, -5L), class = "data.frame")

p1 <- ggpairs(df, 1:3)
p2 <- ggpairs(df, 1:2)

p <- arrangeGrob(p1, p2, ncol=2)

这导致此错误:
Error in arrangeGrob(p1, p2, ncol = 2) : input must be grobs!

有没有办法解决这个问题?

最佳答案

不幸的是,我看不出这是怎么可能的。

首先,它不适用于 gridExtra , 自 arrangeGrob运作于 TableGrob对象:

> ggplotGrob(qplot(1:100))
stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.
TableGrob (6 x 5) "layout": 8 grobs
z cells name grob
1 0 (1-6,1-5) background rect[plot.background.rect.3349]
2 3 (3-3,3-3) axis-l absoluteGrob[GRID.absoluteGrob.3341]
3 1 (4-4,3-3) spacer zeroGrob[NULL]
4 2 (3-3,4-4) panel gTree[GRID.gTree.3329]
5 4 (4-4,4-4) axis-b absoluteGrob[GRID.absoluteGrob.3335]
6 5 (5-5,4-4) xlab text[axis.title.x.text.3343]
7 6 (3-3,2-2) ylab text[axis.title.y.text.3345]
8 7 (2-2,4-4) title text[plot.title.text.3347]
ggpairs的内部表示object 只包含要调用的方法,而不是实际的 grobs:
> str(p1$plots)
List of 9
$ : chr "ggally_diagAxis(ggally_data, ggplot2::aes(x = var1))"
$ : chr "ggally_cor(ggally_data, ggplot2::aes(x = var2, y = var1))"
$ : chr "ggally_cor(ggally_data, ggplot2::aes(x = var3, y = var1))"
$ : chr "ggally_points(ggally_data, ggplot2::aes(x = var1, y = var2))"
$ : chr "ggally_diagAxis(ggally_data, ggplot2::aes(x = var2))"
$ : chr "ggally_cor(ggally_data, ggplot2::aes(x = var3, y = var2))"
$ : chr "ggally_points(ggally_data, ggplot2::aes(x = var1, y = var3))"
$ : chr "ggally_points(ggally_data, ggplot2::aes(x = var2, y = var3))"
$ : chr "ggally_diagAxis(ggally_data, ggplot2::aes(x = var3))"

构建实际grob 的整个工作由 GGally:::print.ggpairs 完成。 .看一下源码,你会看到 grid.newpage()以及多个 popViewport s 和 pushViewport s。这意味着即使是低级 grid方法(例如描述的 here )不适用,因为您的 grid结构将被 GGally:::print.ggpairs 覆盖.

当然,总有办法。修改源代码始终是一种选择,但我相信这对您的任务来说是一条漫长而艰难的道路。如果有人能想出一个简单的解决方法,我很乐意被证明是错误的。

关于r - 使用 gridExtra 排列 GGally 图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24135157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com