gpt4 book ai didi

r - 使用 coord_equal() 时垂直对齐不同高度的多面 ggplot

转载 作者:行者123 更新时间:2023-12-02 08:00:24 26 4
gpt4 key购买 nike

我正在尝试使用cowplot::plot_grid()egg::ggarrange()将两个FACETED ggplot对象与coord_equal()结合起来> 并垂直对齐它们。

egg::ggarrange() 方法对于 UNFACETED 绘图效果很好,解决方案已发布 here .

但是,当包含分面时,egg::ggarrange() 解决方案就会崩溃。 绘图正确对齐,但 y 轴单位是 x 轴单位的两倍。关于如何将其推广到分面有什么建议吗?

dat1 <- data.frame(x = rep(1:10, 2), y = 1:20, z = rep(c("A", "B"), 10))
dat2 <- data.frame(x = 1:10, y = 1:10, z = rep(c("A", "B"), 5))
plot1 <- ggplot(dat1, aes(x=x, y=y)) +
geom_point() + coord_equal() + facet_wrap(~z)
plot2 <- ggplot(dat2, aes(x=x, y=y)) +
geom_point() + coord_equal() + facet_wrap(~z)
egg::ggarrange(plot1, plot2, ncol = 1)

image 1

最佳答案

这似乎是一个简单的修复,

library(egg)

b <- body(gtable_frame)
b[6] <- parse(text="if (fixed_ar) {
ar <- as.numeric(g$heights[tt[1]]) / as.numeric(g$widths[ll[1]])
height <- width * (ar / length(ll))
g$respect <- FALSE
}")

body(gtable_frame) <- b

assignInNamespace("gtable_frame", gtable_frame, ns = 'egg')

enter image description here

关于r - 使用 coord_equal() 时垂直对齐不同高度的多面 ggplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48961927/

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