gpt4 book ai didi

r - 当在多个图上用 y >1 绘制时,Cowplot 会剪辑标签

转载 作者:行者123 更新时间:2023-12-01 10:03:14 26 4
gpt4 key购买 nike

首先,一些模拟图:

df <- data.frame(x = 1:10, y = 2:11)

因为我的真实图表相当复杂,所以我不会在这里提供它们,但会使用重现问题的其他图表。我只想说,当 align设置为 "hv"plot_grid ,它在我的图表之间创建了很多空白。为了解决这个问题,我在原始图中设置了边距,如下所示:
library(ggplot2)

plot1 <- ggplot(df, aes(x = x, y = y)) +
geom_point() +
theme(plot.margin = unit(c(-1, 0, 0, 0), "cm"))
plot2 <- ggplot(df, aes(x = y, y = -x)) +
geom_point() +
theme(plot.margin = unit(c(-1, 0, 0, 0), "cm"))
plot3 <- ggplot(df, aes(x = x, y = y)) +
geom_point() +
theme(plot.margin = unit(c(-1, 0, 0, 0), "cm"))
plot4 <- ggplot(df, aes(x = y, y = -x)) +
geom_point() +
theme(plot.margin = unit(c(-1, 0, 0, 0), "cm"))

它扩展了图的顶部,因此它们填充了空白区域。一切都很好(在这个例子中,顶部和底部之间可能会有一点重叠):
library(cowplot)

plot5 <- plot_grid(plot1, plot2, plot3, plot4, nrow = 2, ncol = 2,
align = "hv")
plot5

直到我尝试添加标签。因为我已经扩展了绘图,所以我想添加高于 y = 1 的标签。限制。
plot5 <- plot_grid(plot1, plot2, plot3, plot4, nrow = 2, ncol = 2, 
align = "hv", labels = c("A", "B", "C", "D"),
label_x = 0.1,
label_y = 1.15)+
theme(plot.margin = unit(c(3, 1, 1, 1), "cm"))
plot5

返回此警告:
Removed 1 rows containing missing values (geom_text).  

enter image description here

这意味着它去掉了两个顶部标签,即使似乎有足够的空间。所以,我想,也许在绘制标签之后才应用绘图边距,或者可能是剪裁导致了问题。所以,我这样做了:
plot5 <- plot_grid(plot1, plot2, plot3, plot4, nrow = 2, ncol = 2, 
align = "hv") +
theme(plot.margin = unit(c(3, 0, 0, 0), "cm")) +
coord_cartesian(clip = "off")

plot5 +
draw_plot_label(c("A", "B", "C", "D"), c(0, 0.5, 0, 0.5), c(1.1, 1.1, .5, .5))

enter image description here
它返回与以前相同的错误,但正如您所看到的,图顶部有更多可用空间。作为最后的手段,我还关闭了原始图中的剪辑,但这也没有解决任何问题,例如:
plot1 <- ggplot(df, aes(x = x, y = y)) +
geom_point() +
theme(plot.margin = unit(c(-1, 0, 0, 0), "cm")) +
coord_cartesian(clip = "off")

只有当我绘制过去 y = 1 时才会出现问题. y = 1.01导致问题,例如。
我该如何解决这个问题?这似乎是一个相当简单的问题,除非 ggplot 有问题。或 cowplot .

最佳答案

通过遵循使用 'egg' 包的建议,我解决了这个问题:删除图形之间的空白并以合理的方式标记绘图。

另外,值得注意的是,在绘制绘图时,egg 似乎比 cowplot 更快。

install.packages("egg")
library(egg)

df <- data.frame(x = 1:10, y = 2:11)

plot1 <- ggplot(df, aes(x = x, y = y)) +
geom_point() +
theme(plot.margin = unit(c(0, 0, 0, 0), "cm"))
plot2 <- ggplot(df, aes(x = y, y = -x)) +
geom_point() +
theme(plot.margin = unit(c(0, 0, 0, 0), "cm"))
plot3 <- ggplot(df, aes(x = x, y = y)) +
geom_point() +
theme(plot.margin = unit(c(0, 0, 0, 0), "cm"))
plot4 <- ggplot(df, aes(x = y, y = -x)) +
geom_point() +
theme(plot.margin = unit(c(0, 0, 0, 0), "cm"))

figure <- egg::ggarrange(plot1, plot2,
plot3, plot4,
nrow = 2,ncol=2,
labels=c("A", "B", "C","D"),
label.args = list(gp=gpar(font=2), x=unit(.5,"line")))
figure

enter image description here

关于r - 当在多个图上用 y >1 绘制时,Cowplot 会剪辑标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54325859/

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