【问题标题】:How to avoid axis line disappearing when using ggarrange?使用ggarrange如何避免轴线消失?
【发布时间】:2017-06-07 09:54:37
【问题描述】:

我想使用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。有没有办法保持轴线?

【问题讨论】:

  • 好像和y轴的裁剪问题有关;它并没有完全消失,但它的一半被绘图面板剪掉了。尝试添加panel.background = element_blank()

标签: r ggplot2 facet


【解决方案1】:

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)

【讨论】:

  • 这在您原来的ggplot() 中的theme() 中,以防其他人无法立即看到。
猜你喜欢
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
相关资源
最近更新 更多