Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add color to text in geom_text based on condition

I am making a plot where the pvalues are plotted as text using geom_text. The pvalues are given in the file pvaluesmir21combined.

I want to add a red colour to my text (FDR) if the value is < 5e-02. Any idea how this can be done?

ggplot(TumorNormalmiR21_5p.m3, aes(X2,value)) + 
  geom_dotplot(aes(fill=variable),binaxis = "y") + coord_flip() +
  theme_bw(base_size=8) +
  theme(axis.text.y=element_text(hjust = 0)) +
  geom_text(aes(x, y, label=FDR, group=NULL),data=pvaluesmir21combined,size=2)


> pvaluesmir21combined

           FDR  x  y
1  p = 8.3e-02  1 13
2  p = 6.3e-05  2 13
3  p = 3.2e-17  3 13
4  p = 4.8e-22  4 13
5  p = 3.1e-10  5 13
6  p = 6.7e-11  6 13
7  p = 3.2e-24  7 13
8  p = 2.1e-06  8 13
9  p = 1.9e-02  9 13
10 p = 9.4e-06 10 13
11 p = 1.5e-03 11 13
like image 529
BioMan Avatar asked Sep 12 '25 18:09

BioMan


1 Answers

You can try with the function scale_color_manual

ggplot(TumorNormalmiR21_5p.m3, aes(X2,value)) + 
 geom_dotplot(aes(fill=variable),binaxis = "y") + coord_flip() +
 theme_bw(base_size=8) +
 theme(axis.text.y=element_text(hjust = 0)) +
 geom_text(aes(x, y, label=FDR, group=NULL, color = ifelse(as.numeric(sub("p = ", "", FDR)) < 5e-02, 0, 1),data=pvaluesmir21combined,size=2) + 
 scale_color_manual(values = c("red", "black"))

See this link http://docs.ggplot2.org/0.9.3.1/scale_manual.html

like image 200
PAC Avatar answered Sep 15 '25 09:09

PAC