问题描述
我对 R 非常陌生,正在尝试为我的数据创建一个小提琴图网格。我能够得到我想要的网格布局,但是,当我制作网格时,我的图位于 x 轴上,如果它们一起绘制,它们会在那里。
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
那么:
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"))