繁体   English   中英

如何使用 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 中的两个图的背景没有分离。 因为我的原始图将是这样的,但更先进的是仅在前 plot 中提供列名称,这些行有助于通过查看前 plot 名称来了解第二列中的列。 谢谢

一种选择是通过将右/左plot.margin设置为零,将axis.ticks.length设置为零并将 y 轴标题设置为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)
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM