set.seed(123456)
df=data.frame(
pathway=c(sample(LETTERS,5),
sample(LETTERS,5)),
pvalue= abs(rnorm(10))/100,
group = rep(c('up','down'),each=5)
)
table(df$pathway)
##
## C D F G J M Q V Z
## 1 1 1 1 2 1 1 1 1
df
## pathway pvalue group
## 1 J 0.0131241551 up
## 2 Z 0.0250264541 up
## 3 Q 0.0116823174 up
## 4 G 0.0042616558 up
## 5 M 0.0099612975 up
## 6 V 0.0111394990 down
## 7 D 0.0005573154 down
## 8 F 0.0117443240 down
## 9 J 0.0105321861 down
## 10 C 0.0005760597 down
#############################
library(ggplot2)
library(ggsci)
df[df$group %in% "down",]$pvalue <- df[df$group %in% "down",]$pvalue*-1
df[duplicated(df$pathway),"pathway"] <- paste0(df[duplicated(df$pathway),"pathway"],".1")
df$pathway <- factor(df$pathway,levels = df[order(df$pvalue,decreasing = T),"pathway"])
str(df)
## 'data.frame': 10 obs. of 3 variables:
## $ pathway: Factor w/ 10 levels "Z","J","Q","M",..: 2 1 3 5 4 9 6 10 8 7
## $ pvalue : num 0.01312 0.02503 0.01168 0.00426 0.00996 ...
## $ group : chr "up" "up" "up" "up" ...
name.y <- substr(df$pathway,1,1)
name.y
## [1] "J" "Z" "Q" "G" "M" "V" "D" "F" "J" "C"
names(name.y) <- df$pathway
ggplot(df,aes(x=pathway,y=pvalue, fill=factor(group)))+geom_bar(stat="identity")+coord_flip( )+
scale_x_discrete(
"pathway",
labels = name.y)+
scale_fill_d3()
