如何在不改变R绘图方向的前提下调整facet_grid分面顺序?
解决ggplot2 facet_grid垂直分面的顺序调整问题
核心问题出在facet_grid的语法逻辑:该函数格式为**行变量 ~ 列变量**,左侧变量控制垂直方向(行)分面,右侧控制水平方向(列)分面。你之前把指定levels的factor放在了~右侧,导致分面变成水平排列,只需调整位置即可。
两种可行方案:
方案1:提前将Timepoint转换为有序因子(推荐)
先修改数据集,把Timepoint转为指定顺序的因子,后续绘图时直接调用即可保持顺序,无需重复设置:
# 转换Timepoint为指定顺序的因子 LTheartbeats$Timepoint <- factor( LTheartbeats$Timepoint, levels = c("2hr", "8hr", "12hr", "18hr", "24hr"), ordered = TRUE ) # 原绘图代码无需修改facet部分 ggplot(data = LTheartbeats, aes(x= factor(Condition), y = Heartbeats, fill = factor(Condition))) + geom_jitter(alpha = .1) + geom_violin(alpha = .75, trim = FALSE) + ylim(0,40)+ facet_grid(Timepoint ~ .) + # 直接使用已排序的因子 scale_fill_discrete(name = "Treatment") + labs(x = "\n Timepoint (Hours Post Exposure)", y = "Heartbeats (Per 10 Seconds) \n", title = " \n") + theme(plot.title = element_text(hjust = 0.5), legend.title = element_text(colour="black", size=20,face="bold"), legend.text = element_text(colour="black", size=15), axis.text = element_text(size= 8), axis.title.x = element_text(face="bold", colour="black", size = 20), axis.title.y = element_text(face="bold", colour="black", size = 20))
方案2:直接在facet_grid的行参数中指定顺序
如果不想修改原始数据集,可直接在facet_grid的行位置(~左侧)设置带levels的factor:
ggplot(data = LTheartbeats, aes(x= factor(Condition), y = Heartbeats, fill = factor(Condition))) + geom_jitter(alpha = .1) + geom_violin(alpha = .75, trim = FALSE) + ylim(0,40)+ # 关键:将factor(Timepoint, levels=...)放在~左侧,控制垂直分面顺序 facet_grid(factor(Timepoint, levels = c("2hr", "8hr", "12hr", "18hr", "24hr")) ~ .) + scale_fill_discrete(name = "Treatment") + labs(x = "\n Timepoint (Hours Post Exposure)", y = "Heartbeats (Per 10 Seconds) \n", title = " \n") + theme(plot.title = element_text(hjust = 0.5), legend.title = element_text(colour="black", size=20,face="bold"), legend.text = element_text(colour="black", size=15), axis.text = element_text(size= 8), axis.title.x = element_text(face="bold", colour="black", size = 20), axis.title.y = element_text(face="bold", colour="black", size = 20))
内容的提问来源于stack exchange,提问作者Michelle
相关产品推荐
相关产品推荐

