使用ggarrange时如何避免轴线消失?
How to avoid axis line disappearing when using ggarrange?
我想使用 ggarrange
排列两个平面图(以使 x 轴对齐)。
library(egg)
library(ggplot2)
p1 <- ggplot(warpbreaks) +
geom_bar(aes(x = wool)) +
facet_wrap(~tension, ncol = 2, scales = "free_x") +
theme_bw() +
theme(axis.line = element_line(colour = "black", size = .1),
panel.border = element_blank(),
strip.background = element_blank())
p2 <- ggplot(warpbreaks) +
geom_bar(aes(x = tension)) +
facet_wrap(~wool) +
theme_bw() +
theme(axis.line = element_line(colour = "black", size = .1),
panel.border = element_blank(),
strip.background = element_blank())
ggarrange(p1, p2, ncol = 2)
效果很好,但不幸的是垂直轴线消失了。使用 grid.arrange
时不会发生这种情况,但至少对于我的真实数据,x 轴未对齐,因此我希望使用 ggarrange
。有没有办法保持轴线?
tl;dr:设置 panel.background = element_blank()
应该恢复轴。
我认为这是 ggplot2 中的裁剪问题(y 轴线可以被绘图面板裁剪,将其宽度减半)和 egg::gtable_frame 将轴放在绘图面板下方的组合。
library(egg)
library(ggplot2)
p1 <- ggplot(warpbreaks) +
geom_bar(aes(x = wool)) +
facet_wrap(~tension, ncol = 2, scales = "free_x") +
theme_bw() +
theme(axis.line = element_line(colour = alpha("red", 0.5), size = 5),
panel.border = element_blank(),
panel.background = element_rect(fill = alpha("white", 0.5),
linetype = 2, colour = "black"),
strip.background = element_blank())
p1
g1 <- ggplotGrob(p1)
gg <- gtable_frame(g1)
grid.newpage()
grid.draw(gg)
我想使用 ggarrange
排列两个平面图(以使 x 轴对齐)。
library(egg)
library(ggplot2)
p1 <- ggplot(warpbreaks) +
geom_bar(aes(x = wool)) +
facet_wrap(~tension, ncol = 2, scales = "free_x") +
theme_bw() +
theme(axis.line = element_line(colour = "black", size = .1),
panel.border = element_blank(),
strip.background = element_blank())
p2 <- ggplot(warpbreaks) +
geom_bar(aes(x = tension)) +
facet_wrap(~wool) +
theme_bw() +
theme(axis.line = element_line(colour = "black", size = .1),
panel.border = element_blank(),
strip.background = element_blank())
ggarrange(p1, p2, ncol = 2)
效果很好,但不幸的是垂直轴线消失了。使用 grid.arrange
时不会发生这种情况,但至少对于我的真实数据,x 轴未对齐,因此我希望使用 ggarrange
。有没有办法保持轴线?
tl;dr:设置 panel.background = element_blank()
应该恢复轴。
我认为这是 ggplot2 中的裁剪问题(y 轴线可以被绘图面板裁剪,将其宽度减半)和 egg::gtable_frame 将轴放在绘图面板下方的组合。
library(egg)
library(ggplot2)
p1 <- ggplot(warpbreaks) +
geom_bar(aes(x = wool)) +
facet_wrap(~tension, ncol = 2, scales = "free_x") +
theme_bw() +
theme(axis.line = element_line(colour = alpha("red", 0.5), size = 5),
panel.border = element_blank(),
panel.background = element_rect(fill = alpha("white", 0.5),
linetype = 2, colour = "black"),
strip.background = element_blank())
p1
g1 <- ggplotGrob(p1)
gg <- gtable_frame(g1)
grid.newpage()
grid.draw(gg)