gpt4 book ai didi

r - 完美对齐多个地 block

转载 作者:行者123 更新时间:2023-12-04 13:58:22 26 4
gpt4 key购买 nike

我的目标是一个复合图,它结合了一个散点图和 2 个密度估计图。我面临的问题是,由于密度图的轴标记和散点图的图例缺失,密度图与散点图没有正确对齐。可以通过使用 plot.margin 进行调整。 .但是,这不是一个可取的解决方案,因为如果对绘图进行更改,我将不得不一遍又一遍地调整它。有没有办法以某种方式定位所有绘图,以便实际绘图面板完美对齐?

enter image description here

我试图保持代码尽可能少,但为了重现问题它仍然很多。

library(ggplot2)
library(gridExtra)

df <- data.frame(y = c(rnorm(50, 1, 1), rnorm(50, -1, 1)),
x = c(rnorm(50, 1, 1), rnorm(50, -1, 1)),
group = factor(c(rep(0, 50), rep(1,50))))


empty <- ggplot() +
geom_point(aes(1,1), colour="white") +
theme(
plot.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank()
)


scatter <- ggplot(df, aes(x = x, y = y, color = group)) +
geom_point() +
theme(legend.position = "bottom")

top_plot <- ggplot(df, aes(x = y)) +
geom_density(alpha=.5, mapping = aes(fill = group)) +
theme(legend.position = "none") +
theme(axis.title.y = element_blank(),
axis.title.x = element_blank(),
axis.text.y=element_blank(),
axis.text.x=element_blank(),
axis.ticks=element_blank() )

right_plot <- ggplot(df, aes(x = x)) +
geom_density(alpha=.5, mapping = aes(fill = group)) +
coord_flip() + theme(legend.position = "none") +
theme(axis.title.y = element_blank(),
axis.title.x = element_blank(),
axis.text.y = element_blank(),
axis.text.x=element_blank(),
axis.ticks=element_blank())

grid.arrange(top_plot, empty, scatter, right_plot, ncol=2, nrow=2, widths=c(4, 1), heights=c(1, 4))

最佳答案

另外一个选项,

library(egg) 
ggarrange(top_plot, empty, scatter, right_plot,
ncol=2, nrow=2, widths=c(4, 1), heights=c(1, 4))

enter image description here

关于r - 完美对齐多个地 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38637261/

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