gpt4 book ai didi

r - 将绘图与 grid.arrange 结合并调整绘图大小和 Axis 标签

转载 作者:行者123 更新时间:2023-12-04 10:54:58 26 4
gpt4 key购买 nike

我想合并两个 ggplotsgrid.arrange只有一个一般的传说。我设法用一个小技巧把这两个传说结合起来,但是由于我从第一个情节中删除了这个传说,这个在 grid.arrange 之后更广泛。 , 当然。如何使两个绘图区域的大小相同?而且我希望有一个共同的 x Axis 标签,位于两个图的下方。用 grid.arrange 可以吗? ?我知道,之前已经回答过类似的问题,但我仍然是 R 的新手并且解决方案太复杂,或者我无法将它们与我的数据相匹配。

所以这是我的两个数据集:

testxy
SN strain est low up
1 A xy 11.6751 11.1480 12.2021
2 B xy 11.4211 11.1108 11.7314
3 C xy 2.6603 2.4291 2.8915
4 D xy 4.5503 4.2972 4.8034

testyz
SN strain est low up
5 A yz 22.1761 21.5136 22.8387
6 C yz 21.4829 21.0251 21.9408
7 B yz 19.3294 18.8950 19.7639
8 D yz 19.9990 19.3934 20.6047

这是我到目前为止的代码。它接近我想要的,但只是接近:
p1<-ggplot(data=testxy, aes(colour=strain, x=SN, y=est))+
theme(panel.background = element_rect(fill = 'white', colour = 'black'))+
theme(legend.position="none")+
theme(axis.title.x = element_text(size = rel(1.5), vjust=-0.1),
axis.title.y = element_text(size = rel(1.5), vjust=1), axis.text.y = element_text(size = rel(1.4)), axis.text.x = element_text(hjust = 1, size = rel(1.5)),plot.title = element_text(size = rel(2.5), lineheight=1, face="bold"))+
theme(plot.margin=unit(c(5,5,5,5),"mm"))+
labs(x="treatment", y="integral", title="xy")+
scale_colour_manual(name="strain", values=c(xy="blue"))+
theme(strip.text.x = element_text(size=12, face="bold"), strip.background = element_rect(colour="black", fill="white"))+
geom_point(aes(color="xy"), size=5, alpha=0.1, shape=16)+
geom_errorbar(aes(ymin=low, ymax=up, width=0.2), colour="deepskyblue", size=0.8)+
scale_y_continuous(breaks=seq(5,20,5), limits=c(2,23.5))

p2<-ggplot(data=testyz, aes(colour=strain, x=SN, y=est))+
theme(panel.background = element_rect(fill = 'white', colour = 'black'))+
theme(legend.position="right")+
theme(axis.title.x = element_text(size = rel(1.5), vjust=-0.1), axis.ticks.y = element_blank(), axis.text.y = element_blank(), axis.text.x = element_text(hjust = 1, size = rel(1.5)), plot.title = element_text(size = rel(2.5), lineheight=1, face="bold"))+
theme(plot.margin=unit(c(5,5,5,5),"mm"))+
labs(x="treatment", y=NULL, title="yz")+
scale_colour_manual(name="strain", values=c(yz="green", xy="blue"))+
theme(strip.text.x = element_text(size=12, face="bold"), strip.background = element_rect(colour="black", fill="white"))+
geom_point(aes(color="yz"), size=5, alpha=0.1, shape=16)+
geom_point(aes(color="xy"), size=0)+
geom_errorbar(aes(ymin=low, ymax=up, width=0.2), colour="green", size=0.8)+
scale_y_continuous(breaks=seq(5,20,5), limits=c(2,23.5))+
scale_x_discrete(limits=c("A", "C", "B", "D"))

grid.arrange(p1,p2, ncol=2)

我之前尝试过刻面。看起来确实不错,但不幸的是,我需要更改 levels 的顺序在 x Axis 上。所以,我认为刻面对我不起作用。

我希望你能帮助我。

干杯
安妮

最佳答案

您应该使用分面:

testxy <- read.table(text = "  SN strain     est     low      up
1 A xy 11.6751 11.1480 12.2021
2 B xy 11.4211 11.1108 11.7314
3 C xy 2.6603 2.4291 2.8915
4 D xy 4.5503 4.2972 4.8034", header = TRUE)

testyz <- read.table(text = " SN strain est low up
5 A yz 22.1761 21.5136 22.8387
6 C yz 21.4829 21.0251 21.9408
7 B yz 19.3294 18.8950 19.7639
8 D yz 19.9990 19.3934 20.6047", header = TRUE)

test <- rbind(cbind(testxy, fac = "xy"),
cbind(testyz, fac = "yz"))


test$SN1 <- interaction(test$SN, test$fac)
test$SN1 <- ordered(test$SN1, levels = test$SN1)


ggplot(data=test, aes(colour=strain, x=SN1, y=est)) +
geom_point() +
facet_wrap(~ fac, scales = "free_x") +
scale_x_discrete(labels = setNames(as.character(test$SN), as.character(test$SN1)))

resulting plot

然而,这不是一个好的绘图,因为读者通常不会注意到 x Axis 是不同的。

关于r - 将绘图与 grid.arrange 结合并调整绘图大小和 Axis 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31454457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com