使用cowplot和ggplot2在某些行周围绘制边框

use*_*781 6 r ggplot2 cowplot

我想以某种方式表明多面板图中的某些行应该进行比较.例如,我想制作这个情节:

在此输入图像描述

看起来像这个图(用PowerPoint制作的面板周围的框):

在此输入图像描述

这是我使用第一个图表的代码.我使用了ggplot和cowplot:

require(cowplot)
theme_set(theme_cowplot(font_size=12)) # reduce default font size
plot.mpg <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
  geom_point(size=2.5)
plot.diamonds <- ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar() +
  theme(axis.text.x = element_text(angle=70, vjust=0.5))
plot.mpg2 <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
  geom_point(size=2.5)
plot.diamonds2 <- ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar() +
  theme(axis.text.x = element_text(angle=70, vjust=0.5))
plot_grid(plot.mpg, plot.diamonds,plot.mpg2, plot.diamonds2, nrow=2,labels = c('A', 'B','C','D'))
Run Code Online (Sandbox Code Playgroud)

我可以对此代码进行更改以获取我想要的边框吗?或者我甚至可以让面板A和B的颜色与面板C和D的背景略有不同?那可能会更好.

Z.L*_*Lin 9

由于结果plot_grid()是一个ggplot对象,一种方法是使用嵌套的绘图网格:plot_grid()每行一个,并添加适当的边框theme().

plot_grid(
  # row 1
  plot_grid(plot.mpg, plot.diamonds, nrow = 1, labels = c('A', 'B')) +
    theme(plot.background = element_rect(color = "black")),

  # row 2
  plot_grid(plot.mpg2, plot.diamonds2, nrow = 1, labels = c('C', 'D')) +
    theme(plot.background = element_rect(color = "black")), 

  nrow = 2)
Run Code Online (Sandbox Code Playgroud)

情节