I want to make a bar graph with the enrichment scores of different enriched metabolic pathways (see table, variable = NES).
This my dataframe:
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")
I want to order my variables so that:
- when the NES is positive, the variables are arranged in descending order
- when the NES is negative, in ascending order
My starting script is :
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")
my idea was to use ifelse in the fct_reorder command like this:
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")
but it didn't work ..... Can anyone help me with this little problem?
Many thanks.
Alex
