gpt4 book ai didi

r - grid.arrange() : arrange 3 plots neatly

转载 作者:行者123 更新时间:2023-12-03 18:36:06 25 4
gpt4 key购买 nike

我想安排 3 个正方形 ggplots,其中一个较大,另外两个较小,与第一个相邻。

这是我的尝试:

gg1 <- ggplot(mtcars,aes(x=hp,y=mpg))+
geom_point(aes(color=factor(cyl)),alpha=.5)+
stat_smooth(method='lm', se=F, color='red')+
ggtitle('plot 1')+
theme_bw()+
theme(aspect.ratio=1,
legend.position = c(1, 1),
legend.justification = c(1,1),
legend.background = element_rect(colour = NA, fill = NA))


gg2 <- ggplot(mtcars)+
geom_density(aes(x=hp, color=factor(cyl)))+
ggtitle('plot 2')+
theme_bw()+
theme(aspect.ratio=1,
legend.position = c(1, 1),
legend.justification = c(1,1),
legend.background = element_rect(colour = NA, fill = NA))


gg3 <- ggplot(mtcars)+
geom_density(aes(x=mpg, color=factor(cyl)))+
ggtitle('plot 3')+
theme_bw()+
theme(aspect.ratio=1,
legend.position = c(1, 1),
legend.justification = c(1,1),
legend.background = element_rect(colour = NA, fill = NA))

grid.arrange(arrangeGrob(gg1),
arrangeGrob(gg2,gg3, ncol=1),
ncol=2, widths=c(1,1))

基本上,我希望小 plot2 的上边界与大 plot1 的上边界齐平,plot3 的下边界与 plot1 的下边界齐平。 ggtitle1 也应与 ggtitle 2 保持一致。

当我保存三重图时(甚至保持所需的纵横比)

png(file = 'test.png',width=900,height=600)
grid.arrange(arrangeGrob(gg1),
arrangeGrob(gg2,gg3, ncol=1),
ncol=2, widths=c(1,1))
dev.off()

我得到了这样的东西

enter image description here

关于如何管理整洁的安排有什么想法吗?

最佳答案

我总是使用 arrangeGrob 函数将所有内容放入一个变量中,并使用 ggsave 保存该对象。

a <- arrangeGrob(arrangeGrob(gg1), arrangeGrob(gg2,gg3, ncol=1), ncol=2, widths=c(2,1)) 
# big plot should be twice wider than two small ones
ggsave('~/Downloads/jnk.pdf',a)
ggsave('~/Downloads/jnk.png',a) #in case of png file.

请注意,新的 gridExtra 包发生了一些变化,语法也发生了变化,但是对于 0.9.1 版本,这工作得很好。

关于r - grid.arrange() : arrange 3 plots neatly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31990847/

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