ggplot2,facet_grid 的 x 轴问题

问题描述

我对 R 非常陌生,正在尝试为我的数据创建一个小提琴图网格。我能够得到我想要的网格布局,但是,当我制作网格时,我的图位于 x 轴上,如果它们一起绘制,它们会在那里。

picture of plot

p2 <- ggplot(data,aes(x=Treatment,y=ECM,fill=Treatment)) + 
      geom_violin(trim=FALSE) +   facet_grid (Time ~ Duff) +
      labs(title=" ",x=" ",y = "ECM Root Colonization (%)")
p2 + theme_classic() + theme(legend.position="right") + stat_summary(fun=mean,geom="point",size=2,color="black") + theme(axis.title.x=element_blank(),axis.text.x=element_blank(),axis.ticks.x=element_blank()) + scale_fill_discrete(name = "Treatment",labels = c("B-M- B/B","B-M- B/M (B)","B-M- B/M (M)","B-M- M/M","B-M+ B/B","B-M+ B/M (B)","B-M+ B/M (M)","B-M+ M/M","B+M- B/B","B+M- B/M (B)","B+M- B/M (M)","B+M- M/M","B+M+ B/B","B+M+ B/M (B)","B+M+ B/M (M)","B+M+ M/M")) +
      theme(strip.background = element_rect(colour="black",fill="white",size=1.5,linetype="solid")) +
      theme(strip.text.x = element_text(size=15,color="black",face="bold"))

因为 x 轴是“治疗”,这也是我的填充,我尝试使用以下代码释放比例,但这并没有改变情节。

+   facet_grid (Time ~ Duff,scales="free")
+   facet_grid (Time ~ Duff,scales="free_x")

我也尝试使用 facet_wrap 重新创建它,但没有成功。

我很乐意提供任何其他可能有用的信息。预先感谢您的任何建议!

解决方法

下次请提供数据集,这看起来像您的数据集:

lbl = paste0(rep(c("B-","B+"),each=8),rep(c("M-","M+"),each=4)," ",rep(c("B/B","B/M(B)","B/M(M)","M/M"),2))

duff = rep(c("BS_MS","BS_MU","BU_MS","BU_MU"),each=4)
names(duff) = lbl

set.seed(111)

data = data.frame(
        Treatment = rep(lbl,10),ECM = rnorm(160),Time = rep(c("Final","Treatment"),each=80)
        )

data$Duff = duff[as.character(data$Treatment)]

如果您在基本图上执行 facet_grid(..scales="free"),它会起作用:

p2 = ggplot(data,aes(x=Treatment,y=ECM,fill=Treatment)) + 
geom_violin(trim=FALSE) +   facet_grid (Time ~ Duff,scales="free") +
theme(axis.text.x = element_text(angle = 90,vjust = 0.5,hjust=1))
p2

enter image description here

那么:

p2 + theme_classic() + theme(legend.position="right") + 
stat_summary(fun=mean,geom="point",size=2,color="black") +
theme(axis.title.x=element_blank(),axis.text.x=element_blank(),axis.ticks.x=element_blank()) +
scale_fill_discrete(name = "Treatment",labels = c("B-M- B/B","B-M- B/M (B)","B-M- B/M (M)","B-M- M/M","B-M+ B/B","B-M+ B/M (B)","B-M+ B/M (M)","B-M+ M/M","B+M- B/B","B+M- B/M (B)","B+M- B/M (M)","B+M- M/M","B+M+ B/B","B+M+ B/M (B)","B+M+ B/M (M)","B+M+ M/M")) +
theme(strip.background = element_rect(colour="black",fill="white",size=1.5,linetype="solid")) +
theme(strip.text.x = element_text(size=15,color="black",face="bold"))

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...