如何使用 plot_grid() 将两个图组合在一起,在 "cowplot" 中获得单个网格背景?用R语言

How to have a single grid background in "cowplot" using plot_grid() combining two plots together? in R language

在R语言中我想有一个单一的背景水平线(背景网格)以便更容易识别列。我将在 R 代码中提供示例。

# install.packages("cowplot")
library(ggplot2) 
library(cowplot)



df <- data.frame(
  supp = rep(c("VC", "OJ"), each = 3),
  dose = rep(c("D0.5", "D1", "D2"), 2),
  len = c(6.8, 15, 33, 4.2, 10, 29.5)
)

p <- ggplot(df, aes(x = dose, y = len))+
  geom_col(aes(fill = supp), width = 0.7)+ coord_flip()+
  theme(axis.text.x=element_blank(),axis.ticks.x=element_blank(),
        axis.text.y=element_blank(),axis.ticks.y=element_blank()) +
  labs(x = "", y = "") +
  theme(  legend.position = "bottom",
          panel.background = element_rect(fill = "transparent"),
          panel.grid.major = element_blank(),
         panel.grid.minor = element_blank(),
         plot.background = element_rect(fill = "transparent", color = NA))
p

plot_grid(p, p, align = 'h', ncol = 2, rel_widths = c(5, 5)) 

我想制作一个(背景网格)以灰色水平线的形式分隔每一列,就像将提供的屏幕截图中的一样 我希望背景通过 plot_grid 中的两个地块而没有分离。因为我的原始图将是这样的,但更先进的是仅在第一个图中提供列名称,这些行有助于通过查看第一个图名称来了解第二列中的列。 谢谢

一个选项是通过将 right/left plot.margin 设置为零,将 axis.ticks.length 设置为零并通过设置 y 来删除绘图之间的 space轴标题为 NULL。最后我使用 geom_hline 添加“网格”线。

注意:我调换了 xy 的角色以摆脱 coord_flip。使我的大脑 (;) 更容易进行调整。

# install.packages("cowplot")
library(ggplot2)
library(cowplot)

df <- data.frame(
  supp = rep(c("VC", "OJ"), each = 3),
  dose = rep(c("D0.5", "D1", "D2"), 2),
  len = c(6.8, 15, 33, 4.2, 10, 29.5)
)

p <- ggplot(df, aes(y = dose, x = len)) +
  geom_col(aes(fill = supp), width = 0.7) +
  geom_hline(yintercept = 0:3 + .5) +
  labs(x = "", y = NULL) +
  theme(
    axis.text = element_blank(), 
    axis.ticks = element_blank(),
    axis.ticks.length = unit(0, "pt"),
    legend.position = "bottom",
    panel.background = element_rect(fill = "transparent"),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    plot.background = element_rect(fill = "transparent", color = NA)
  )

plot_grid(
  p + theme(plot.margin = margin(5.5, 0, 5.5, 5.5)),
  p + theme(plot.margin = margin(5.5, 5.5, 5.5, 0)),
  align = "h", ncol = 2, rel_widths = c(5, 5)
)