a b/c_VisualizationScript/Visulz_bulkRNA_volcano.R
1
2
# MESSAGE -----------------------------------------------------------------
3
#
4
# author: Yulin Lyu
5
# email: lvyulin@pku.edu.cn
6
#
7
# require: R whatever
8
#
9
# ---
10
11
# 1. Load packages --------------------------------------------------------
12
13
setwd("exampleData/RNA")
14
15
# grammar
16
library(tidyverse)
17
library(magrittr)
18
library(glue)
19
library(data.table)
20
21
# analysis
22
library(DESeq2)
23
24
# graphics
25
library(ggplot2)
26
library(ggrepel)
27
library(ggsci)
28
library(scales)
29
library(latex2exp)
30
31
# 2. Load data ------------------------------------------------------------
32
33
diffData <- fread("mid/ES_vs_Fib.DEG.csv")
34
colnames(diffData)[1] <- "gene"
35
36
diffData[is.na(padj), padj := 1][]
37
diffData[, p := -log10(padj)][]
38
39
# 3. Plot -----------------------------------------------------------------
40
41
diffData[, type := "ns"][]
42
diffData[log2FoldChange > 3 & padj < 0.05, type := "up"][log2FoldChange < -3 & padj < 0.05, type := "down"][]
43
44
labelGene <- diffData[order(p, decreasing = T)][type == "up"][1:10]
45
46
pal_nejm()(8) %>% show_col()
47
typeColor <- structure(
48
  c(pal_nejm()(2), "gray80"),
49
  names = c("up", "down", "ns")
50
)
51
52
ggplot(diffData, aes(x = log2FoldChange, y = p)) +
53
  geom_point(aes(color = type, size = p), show.legend = F) +
54
  geom_hline(yintercept = -log10(0.05), color = "gray60", linetype = "dashed") +
55
  geom_vline(xintercept = 3, color = "gray60", linetype = "dashed") +
56
  geom_vline(xintercept = -3, color = "gray60", linetype = "dashed") +
57
  geom_text_repel(
58
    data = labelGene, aes(label = gene),
59
    size = 3, fontface = "italic",
60
    nudge_x = .5, nudge_y = .5,
61
    max.overlaps = 100) +
62
  scale_radius(range = c(.1, 2)) +
63
  scale_color_manual(values = typeColor) +
64
  scale_y_continuous(expand = expansion(c(0, 0.05))) +
65
  labs(
66
    x = TeX("$log_{2}(Fold\\,Change)$"),
67
    y = TeX("$-log_{10}(\\textit{P}\\,value)$")) +
68
  theme(
69
    aspect.ratio = 1,
70
    panel.background = element_blank(),
71
    panel.grid = element_blank(),
72
    axis.line = element_line()
73
  )
74
75
ggsave("plot/ES_vs_Fib.volcano.pdf", width = 4, height = 4)