垂直和水平对齐打印R ggplot2
我有一个特别的问题(至少我喜欢这样认为:))。我想在两列两行中对齐三个绘图。对齐应在中央图(见图;图C)之后,其中图A应在图C的x轴之后对齐,图D应在图C的y轴之后对齐。注意,没有图B,该图应保持为空 数据: 我希望D区离C区很近垂直和水平对齐打印R ggplot2,r,ggplot2,alignment,figure,R,Ggplot2,Alignment,Figure,我有一个特别的问题(至少我喜欢这样认为:))。我想在两列两行中对齐三个绘图。对齐应在中央图(见图;图C)之后,其中图A应在图C的x轴之后对齐,图D应在图C的y轴之后对齐。注意,没有图B,该图应保持为空 数据: 我希望D区离C区很近 Deni正如@Axeman提到的,这是由图例引起的,cowplot::get_legend()可以解决这个问题(请参见?cowplot::get_legend(),了解您的具体情况): legend_p1您是否对A和C的x轴使用相同的值?看这个例子,它都很好地结合在
Deni正如@Axeman提到的,这是由图例引起的,
cowplot::get_legend()
可以解决这个问题(请参见?cowplot::get_legend()
,了解您的具体情况):
legend_p1您是否对A和C的x轴使用相同的值?看这个例子,它都很好地结合在一起:library(ggplot2);图书馆(cowplot);“希望有人能复制一些东西”,嗯,我想你应该给出一个可复制的例子。是否收到有关对齐的消息或警告?@m-dz,无论x轴值如何,打印区域都将/应该对齐。不过,图例可能会带来问题。@Axeman,看来我不明白cowplot
对齐是如何工作的,谢谢你纠正我。从图中可以看出,它正在对齐整个图,包括图例和轴标签。更容易获得。@m-dz是的,这些轴值相同,C和D的y轴值相同。在我的情况下,你刚刚采用了相同的方法,但校准不起作用。非常感谢!这看起来更符合我的真实需求。你能告诉我进行各自数据转换的最佳方法吗?没问题!我不知道你所说的“各自的数据转换”是什么意思,你能解释一下吗,或者给你上面的问题添加一个例子吗?我的意思是,有没有一种巧妙的方法可以将原始帖子中的数据调整到你为“可读”绘图而创建的数据?不是真的,通过使绘图“可读”,我的意思是调整相对宽度
等等。,您还可以缩短GO
和GOd
,这样它们就不会占用太多空间。还有什么。。。如果绘图D
仅显示体积比较,您可以尝试删除x轴。这一切只是为了修复情节的“视觉”方面。谢谢你的帮助!还有一件事,实际上是两件:)在绘图时,我想让绘图D尽可能靠近绘图C,可以这样做吗?现在他们几乎分开了。还有一个“上帝”的标签在a区后徘徊,我想把它去掉。再次感谢。
a <- data.frame(
id = 1:15,
GO = c(
"phosphoglycerate kinase", "phosphoglycerate kinase",
"phosphoglycerate kinase", "phosphoglycerate kinase", "phosphoglycerate kinase",
"phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase",
"phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase", "allantoicase",
"allantoicase", "allantoicase", "allantoicase", "allantoicase"),
variable = c(
"d64", "d31", "d16", "d9", "d0", "d64", "d31", "d16", "d9", "d0", "d64", "d31", "d16", "d9", "d0"),
value = c(
154.28239, 226.04355, 245.67728, 271.82375, 270.83519, 289.01809, 491.66461,
485.28291, 351.3759, 510.96043, 22.75253, 31.66546, 129.50564, 206.6651, 32.43769),
relAbundByGO = c(
13.201624, 19.342078, 21.022096, 23.259395, 23.174806, 13.57975, 23.101262,
22.801413, 16.509683, 24.007892, 5.378513, 7.485456, 30.614078, 48.853948, 7.668005),
GOd = c(
"phosphoglycerate kinase", "phosphoglycerate kinase",
"phosphoglycerate kinase", "phosphoglycerate kinase", "phosphoglycerate kinase",
"phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase",
"phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase", "allantoicase",
"allantoicase", "allantoicase", "allantoicase", "allantoicase"
))
b <- data.frame(
id = 1:15,
Compound = c(
"C5-C10", "C5-C10", "C5-C10",
"C5-C10", "C5-C10", "C10-C20", "C10-C20", "C10-C20", "C10-C20",
"C10-C20", "BTEX", "BTEX", "BTEX", "BTEX", "BTEX"),
Degradation = c(
100, 100, 23.5, 5.6, 0, 100, 100, 67.2, 19, 0.6, 100, 100, 88.7, 43.3, 0.1),
st ()dev = c(
0, 0, 35, 12.4, 0, 0, 0, 19.3, 13.1, 0.6, 0, 0, 33.4, 43.4, 0.2),
day = c(
"NSWOD-0", "NSWOD-64", "NSOD-9",
"NSOD-16", "NSOD-31", "NSWOD-0", "NSWOD-64", "NSOD-9", "NSOD-16",
"NSOD-31", "NSWOD-0", "NSWOD-64", "NSOD-9", "NSOD-16", "NSOD-31"))
a$GO <- factor(a$GO, levels = a$GO) #keep the same order as in table
a$variable <- factor(a$variable, levels = c("d0", "d64", "d9", "d16", "d31"))
p1 <- ggplot(data = a, aes(x=variable, y=GO)) +
geom_tile(aes(fill=relAbundByGO), colour = "white") + ylab("Gene ontology") +
scale_fill_gradient(name="Relative\nabundance of TPM", low = "green", high = "red", limits=c(0, 100), na.value="transparent") +
scale_x_discrete("Sample",
breaks = c("d0", "d64", "d9", "d16", "d31"),
labels = c("CTRL-0", "CTRL-64", "CEWAF-9","CEWAF-16","CEWAF-31")) +
theme(legend.position="left")
p1
a$GO <- factor(a$GO, levels = a$GO) #keep the same order as in table
p2 <- ggplot(data = a, aes(x=GO, y=value)) +
geom_bar(stat = "identity") +
theme(axis.text.x = element_text(angle = 0)) +
ylab("Cumulative TPM abundance") +
theme(axis.text.y=element_blank(),
axis.title.y=element_blank()) +
coord_flip()
p2
b$day <- factor(b$day, levels = b$day) #keep the same order as in table
p3 <- ggplot(b, aes(x=day, y=Degradation, color=Compound, group=Compound)) +
geom_point(size=4, shape=21, fill="white") +
geom_line(size=0.7) +
ylab("Hydrocarbon content (%)") +
geom_errorbar(aes(ymax=Degradation + stdev, ymin=Degradation-stdev), linetype="dashed", lwd=.6, width=.4) +
theme_bw(base_size = 12, base_family = "Helvetica") +
theme(axis.text.x=element_blank()
,axis.ticks=element_blank()
,axis.title.x=element_blank(),
legend.position="left") +
scale_color_discrete(name="Hydrocarbon\ngroup",
breaks=c("C5-C10", "C10-C20", "BTEX", "PAHs"))
p3
legend_p1 <- get_legend(p1)
legend_p3 <- get_legend(p3)
p1 <- p1 + theme(legend.position='none')
p3 <- p3 + theme(legend.position='none')
cowplot::plot_grid(
cowplot::plot_grid(legend_p3, legend_p1, ncol = 1),
cowplot::plot_grid(p3, NULL, p1, p2, ncol = 2, nrow = 2, rel_widths = c(1, 0.75, 1, 0.75), labels = c('A', '', 'C', 'D'), align = "hv"),
rel_widths = c(0.16, 1))
legend_p1 <- get_legend(p1)
legend_p3 <- get_legend(p3)
p1 <- p1 + theme(legend.position='none')
p3 <- p3 + theme(legend.position='none')
cowplot::plot_grid(
cowplot::plot_grid(legend_p1, legend_p3, ncol = 1),
cowplot::plot_grid(p3, NULL, p1, p2, ncol = 2, nrow = 2, rel_widths = c(1, 0.75, 1, 0.75), labels = c('A', '', 'C', 'D'), align = "hv"),
rel_widths = c(0.1, 1))
a <- data.frame(
id = 1:15,
GO = c(
"phosphoglycerate kinase", "phosphoglycerate kinase",
"phosphoglycerate kinase", "phosphoglycerate kinase", "phosphoglycerate kinase",
"phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase",
"phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase", "allantoicase",
"allantoicase", "allantoicase", "allantoicase", "allantoicase"),
variable = c(
"d64", "d31", "d16", "d9", "d0", "d64", "d31", "d16", "d9", "d0", "d64", "d31", "d16", "d9", "d0"),
value = c(
154.28239, 226.04355, 245.67728, 271.82375, 270.83519, 289.01809, 491.66461,
485.28291, 351.3759, 510.96043, 22.75253, 31.66546, 129.50564, 206.6651, 32.43769),
relAbundByGO = c(
13.201624, 19.342078, 21.022096, 23.259395, 23.174806, 13.57975, 23.101262,
22.801413, 16.509683, 24.007892, 5.378513, 7.485456, 30.614078, 48.853948, 7.668005),
GOd = c(
"phosphoglycerate kinase", "phosphoglycerate kinase",
"phosphoglycerate kinase", "phosphoglycerate kinase", "phosphoglycerate kinase",
"phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase",
"phenylalanine-tRNA ligase", "phenylalanine-tRNA ligase", "allantoicase",
"allantoicase", "allantoicase", "allantoicase", "allantoicase"
))
b <- data.frame(
id = 1:15,
Compound = c(
"C5-C10", "C5-C10", "C5-C10",
"C5-C10", "C5-C10", "C10-C20", "C10-C20", "C10-C20", "C10-C20",
"C10-C20", "BTEX", "BTEX", "BTEX", "BTEX", "BTEX"),
Degradation = c(
100, 100, 23.5, 5.6, 0, 100, 100, 67.2, 19, 0.6, 100, 100, 88.7, 43.3, 0.1),
st ()dev = c(
0, 0, 35, 12.4, 0, 0, 0, 19.3, 13.1, 0.6, 0, 0, 33.4, 43.4, 0.2),
day = c(
"NSWOD-0", "NSWOD-64", "NSOD-9",
"NSOD-16", "NSOD-31", "NSWOD-0", "NSWOD-64", "NSOD-9", "NSOD-16",
"NSOD-31", "NSWOD-0", "NSWOD-64", "NSOD-9", "NSOD-16", "NSOD-31"))