gpt4 book ai didi

r - ggplot 分开的图例和情节

转载 作者:行者123 更新时间:2023-12-03 21:15:55 24 4
gpt4 key购买 nike

我正在使用 网格 lpackage 用于放置我用 制作的图形ggplot2 :

library(ggplot2)
library(grid)

Layout <- grid.layout(nrow = 4, ncol = 4,
widths = unit(1, "null"),
heights = unit(c(0.4, 0.8, 1.2, 1.2), c("null", "null", "null")))
grid.show.layout(Layout)

plot1 = ggplot(diamonds, aes(clarity, fill = color)) +
geom_bar() +
facet_wrap(~cut, nrow = 1)
print(plot1 + theme(legend.position = "none"),
vp = viewport(layout.pos.row = 3, layout.pos.col = 1:4))

问题是我想把情节放在第三行 (3,1) - (3,4) 并将图例放在 (4,4) 位置。不幸的是,我真的找不到一种方法来创建一个图例变量。
我在网上搜索,我得到的最接近的是使用较旧的 + opts(keep = "legend_box")但这已被弃用。

older solution .

最佳答案

您可以从 grob 获取图例ggplot 的对象。然后你可以使用 grid.arrange功能定位一切。

library(gridExtra)
g_legend<-function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
legend
}

legend <- g_legend(plot1)

grid.arrange(legend, plot1+ theme(legend.position = 'none'),
ncol=2, nrow=1, widths=c(1/6,5/6))

网上有很多使用 g_legend 的例子。功能。

HTH

关于r - ggplot 分开的图例和情节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539348/

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