简体   繁体   中英

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

In R language I want to have a single background horizontal lines (background grid) to make it easier to identify the columns. I will provide an example in the R code.

# 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)) 

两个情节的输出是这样的

I want to make a (background grid) in the form of grey horizontal lines that separates each column likee in the screenshot that will provided这里 I want the background pass by the two plots in the plot_grid with no separation. Because my original plots will be like that but more advance providing the columns names in the first plot only and these lines helps to know what column is that in the second column by looking at the first plot names. Thanks

One option would be to remove the space between your plots by setting the right/left plot.margin to zero, setting the axis.ticks.length to zero and by setting the y axis title to NULL . Finally I use geom_hline to add the "grid" lines.

Note: I switched the role of x and y to get rid of coord_flip . Makes it easier (for my brain (;) to do the adjustments.

# 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)
)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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