我想用不同的富集代谢途径的富集分数制作一个条形图(见表,variable = NES)。
这是我的数据
structure(list(NAME = c("KEGG_BETA_ALANINE_METABOLISM", "KEGG_PEROXISOME",
"KEGG_VALINE_LEUCINE_AND_ISOLEUCINE_DEGRADATION", "KEGG_DRUG_METABOLISM_OTHER_ENZYMES",
"KEGG_ALANINE_ASPARTATE_AND_GLUTAMATE_METABOLISM", "KEGG_OXIDATIVE_PHOSPHORYLATION",
"KEGG_AMINOACYL_TRNA_BIOSYNTHESIS", "KEGG_GLYOXYLATE_AND_DICARBOXYLATE_METABOLISM",
"KEGG_GLYCINE_SERINE_AND_THREONINE_METABOLISM", "KEGG_FOCAL_ADHESION",
"KEGG_ECM_RECEPTOR_INTERACTION", "KEGG_CELL_ADHESION_MOLECULES_CAMS",
"KEGG_LEUKOCYTE_TRANSENDOTHELIAL_MIGRATION", "KEGG_HEMATOPOIETIC_CELL_LINEAGE",
"KEGG_LEISHMANIA_INFECTION"), SIZE = c(22L, 77L, 39L, 25L, 27L,
98L, 22L, 16L, 30L, 192L, 83L, 105L, 112L, 67L, 52L), ES = c(0.6333836,
0.4741722, 0.54287475, 0.53727466, 0.52466995, 0.39599127, 0.5367668,
0.57810646, 0.47952536, -0.63034177, -0.6984717, -0.65617377,
-0.638508, -0.6932509, -0.69873965), NES = c(1.9397553, 1.8766444,
1.8667365, 1.7000551, 1.6511785, 1.6349672, 1.6263499, 1.5636431,
1.5489777, -2.6781485, -2.64518, -2.5497398, -2.4806988, -2.4616463,
-2.4117668), NOM.p.val = c(0, 0, 0, 0.0093240095, 0.023148147,
0.0024271845, 0.011520738, 0.046620045, 0.028697573, 0, 0, 0,
0, 0, 0), FDR.q.val = c(0.018558597, 0.01772788, 0.013456956,
0.059479948, 0.06941477, 0.066045, 0.060804494, 0.08560156, 0.0844615,
0, 0, 0, 0, 0, 0), FWER.p.val = c(0.031, 0.058, 0.067, 0.341,
0.454, 0.501, 0.53, 0.711, 0.753, 0, 0, 0, 0, 0, 0), RANK.AT.MAX = c(8546L,
6704L, 6861L, 3072L, 6397L, 11642L, 10387L, 5387L, 6522L, 5367L,
3928L, 5004L, 5034L, 3514L, 5809L)), row.names = c(NA, 15L), class = "data.frame")我想给我的变量排序,以便:
当
升序排列。
我的起始脚本是:
df %>%
filter(FDR.q.val < 0.05) %>%
select(c(NAME, NES)) %>%
mutate(sign=ifelse(NES>0, "CondA", "CondB")) %>%
mutate(NAME=fct_reorder(NAME, NES)) %>%
ggplot(aes(x=NAME,y=NES, fill=sign))+
geom_bar(stat="identity")+
coord_flip()+
xlab("")+
ylab("Normalized Enrichment Score")我的想法是在fct_reorder命令中使用ifelse,如下所示:
df %>%
filter(FDR.q.val < 0.05) %>%
select(c(NAME, NES)) %>%
mutate(sign=ifelse(NES>0, "CondA", "CondB")) %>%
mutate(NAME=fct_reorder(NAME, ifelse(NES>0, NES, abs(NES)))) %>%
ggplot(aes(x=NAME,y=NES, fill=sign))+
geom_bar(stat="identity")+
coord_flip()+
xlab("")+
ylab("Normalized Enrichment Score")但这不管用..。有人能帮我解决这个小问题吗?
非常感谢。
亚历克斯
发布于 2022-04-29 14:03:52
不知道你想不想要这个。如果是这样的话,您可以简单地为您的reorder变量使用sorting NES,而不需要在ggplot的上游设置因子。
library(tidyverse)
df %>%
filter(FDR.q.val < 0.05) %>%
mutate(sign=ifelse(NES>0, "CondA", "CondB")) %>%
ggplot(aes(reorder(NAME, sort(NES, decreasing = T)), NES, fill = sign)) +
geom_bar(stat="identity")+
coord_flip()+
xlab("")+
ylab("Normalized Enrichment Score")

https://stackoverflow.com/questions/72058836
复制相似问题