如何在ggplot发散图中保留自定义基因排序?
解决ggplot发散图自定义基因顺序的问题
问题核心是你绘图时用了reorder(gen, RQ_gapdh),这个函数会根据RQ_gapdh的数值重新排序x轴基因,直接覆盖了你之前设置的因子顺序。要保留自定义顺序,按以下步骤修改:
1. 正确设置因子的自定义顺序
无需手动排序数据框,转换因子时直接指定levels参数为你的自定义基因顺序即可:
genes_order <- c("ABCA1","ABCG1","NR1H2","NR1H3","PPARA", "PPARD","PPARG","RXRA","RXRB") # 转换为因子并锁定自定义顺序 df_plot2$gen <- factor(df_plot2$gen, levels = genes_order)
2. 修改绘图代码,移除reorder函数
绘图时x轴直接使用gen,不再用reorder干扰顺序:
p1 <- ggplot(data = df_plot2, aes(x = gen, y = RQ_gapdh, ymin = after_scale(1), fill = Color)) + geom_bar(stat = "identity", width=.5)+ labs(x = "Genes", y = expression(2^-ddCt~"value"), title = "Gene expression", subtitle = "1 year post-intervention")+ guides(fill = FALSE) + coord_flip()+ facet_wrap(~grup_int, labeller = labeller(grup_int = c("1" = "Olive oil", "2" = "Nuts", "3" = "Low-fat diet")))
补充说明:
- 原代码里的
subtitles参数应为subtitle(单数),否则副标题无法正常显示 - 用
expression()能正确渲染2^-ddCt的数学格式,避免显示为纯文本字符串
内容的提问来源于stack exchange,提问作者Javier Hernando
相关产品推荐
相关产品推荐

