如何使用 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
添加“网格”线。
注意:我调换了 x
和 y
的角色以摆脱 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)
)
在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))
我想制作一个(背景网格)以灰色水平线的形式分隔每一列,就像将提供的屏幕截图中的一样
一个选项是通过将 right/left plot.margin
设置为零,将 axis.ticks.length
设置为零并通过设置 y 来删除绘图之间的 space轴标题为 NULL
。最后我使用 geom_hline
添加“网格”线。
注意:我调换了 x
和 y
的角色以摆脱 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)
)