Hi!
I want to make a scatterplot where the down-regulated genes (log2FC <= -1.5 & p_value <= 0.05) are highlighted in blue and the up-regulated (log2FC >= 1.5 & p_value <= 0.05) in red but, even if I used ggrepel I still have a couple of genes that despite all, still overlap because they re very close to each other. is there a way to specify which gene I do not want to overlap?
here is my code:
#subset
dfup <- Dpg_JNKst %>% filter(log2FC >= 1.5 & p_value <= 0.05)
dfdown <- Dpg_JNKst %>% filter(log2FC <= -1.5 & p_value <= 0.05)
#scatterplot
library(ggplot2)
library(ggrepel)
ggplot(data = Dpg_JNKst, aes(x= log2FC, y= -1*log10(p_value)))+ ggtitle("Stress-activated kinase signaling cascade") +
geom_point() +
geom_point(data= dfdown, aes(x= log2FC, y= -1*log10(p_value)), color = "blue")+
geom_point(data= dfup, aes(x= log2FC, y= -1*log10(p_value)), color = "red")+
geom_vline(xintercept = 1.5,linetype = "dashed")+
geom_vline(xintercept = -1.5,linetype = "dashed")+
geom_hline(yintercept = -1*log10(0.05),linetype = "dashed") +
geom_hline(yintercept = -1*log10(0.01),linetype = "dashed", color = "black")+
geom_text(mapping=aes(x=-7,y=2.0),label=paste("0.01"), color = "black", size = 2.5, vjust=-0.5) +
geom_hline(yintercept = -1*log10(0.001),linetype = "dashed", color = "black") +
geom_text(mapping=aes(x=-7,y=3.0),label=paste("0.001"), color = "black", size = 2.5, vjust=-0.5)+
geom_text(mapping=aes(x=-7,y=1.30),label=paste("0.05"), size = 2.5, vjust=-0.5) +
geom_text_repel(data=dfdown, aes(label=`Associated.Gene.Name`), color = "blue") +
geom_text_repel(data=dfup, aes(label=`Associated.Gene.Name`), color = "red", max.overlaps = Inf, nudge_x = .15, box.padding = 1)
Maybe is a stupid question but thank you in advance!
camilla
1 answer
I am not sure, if I fully understand what outcome you are trying to achieve, but I think you have a few options that you could try:
- use e.g.
geom_text_repel(..., force=3), which should spread out the labels more (default value is 1). - try
geom_text_repel(..., force_pull=0.5), which allows labels to be placed further away from their corresponding data points (default value is 1). - don't allow
geom_text_repel(..., max.overlaps=Inf), because this renders labels even if they overlap too many things. By default, a label that overlaps 10 items will not be displayed. - reorder the factor levels of
dfup[,"Associated.Gene.Name"]anddfdown[,"Associated.Gene.Name"]such that the gene name you want to be shown for sure are last (?). - Set the
Associated.Gene.Nameof genes you do not want to be labelled toNAindfup&dfdownand usegeom_text_repel(..., na.rm=TRUE)
I hope, something in this list works. Otherwise, consider showing a screenshot of the issue that you are trying to resolve.
Log in to answer this question.
probably you can try a data frame containing only genes of interest and pass it to geom_text_repel, instead of using up and down regulated genes.