R語(yǔ)言繪制精美圖形 | 火山圖 | 學(xué)習(xí)筆記

一邊學(xué)習(xí),一邊總結(jié),一邊分享营袜!

教程圖形

前言

最近的事情較多炕泳,教程更新實(shí)在是跟不上,主要原因是自己沒(méi)有太多時(shí)間來(lái)學(xué)習(xí)和整理相關(guān)的內(nèi)容勺美。一般在下半年基本都是非常忙,所有一個(gè)人的精力和時(shí)間有限,只能顧一方面杠袱。所以,長(zhǎng)時(shí)間不更新是很正常的窝稿,若在看本教程的你楣富,若有愿意分享的教程,可以投稿伴榔,我們也歡迎投稿纹蝴。

今天,來(lái)分享一下近兩天自己的學(xué)習(xí)筆記踪少。火山圖塘安,此圖也是實(shí)用性很強(qiáng),80%的同學(xué)應(yīng)該可以用得到援奢,今天分享的只是學(xué)習(xí)筆記的一部分兼犯,后面會(huì)逐漸完善。既然是學(xué)習(xí)筆記集漾,那么我們也有參考的教程切黔,我們也會(huì)再文末附上參考的教程,大家也可以直接到對(duì)應(yīng)教程中學(xué)習(xí)帆竹。


設(shè)置路勁

setwd("E:\\小杜的生信筆記\\2023\\20231117-火山圖")
rm(list = ls())

加載相關(guān)包

library(ggplot2)
library(RColorBrewer)
library(ggrepel)
library(RUnit)
library(ggforce)
library(tidyverse)
library(ggpubr)
library(ggprism)
library(paletteer)

1绕娘、加載及處理數(shù)據(jù)

加載數(shù)據(jù)

df <- read.csv("all.limmaOut.csv",header = T,row.names = 1)
head(df)

1.2 數(shù)據(jù)分類

使用runif對(duì)添加數(shù)據(jù)logCMP,用于后續(xù)的分析

df$logCMP <- stats::runif(12035, 0, 16)

對(duì)數(shù)據(jù)進(jìn)行UpDown分類
分類標(biāo)準(zhǔn):

  1. P值小于0.05
  2. |logFC| >= 1
    篩選標(biāo)準(zhǔn)可以進(jìn)行自己的需求進(jìn)行設(shè)置
##'@判斷基因up or down

df$Group <- factor(ifelse(df$P.Value < 0.05 & abs(df$logFC) >= 1,
                          ifelse(df$logFC >= 1, 'Up','Down'),'NotSignifi'))
df[1:10,1:8]

table(df$Group)

添加基因名栽连,用于后續(xù)的火山圖顯示基因名使用

df$gene <- row.names(df)

1.3 設(shè)置主題

可根據(jù)自己需求進(jìn)行設(shè)置险领,或是統(tǒng)一在這里設(shè)置即可。

##'@主題
mytheme <- theme(panel.background = element_rect(fill = NA),
                 plot.margin = margin(t=10,r=10,b=5,l=5,unit = "mm"),
                 # axis.ticks.y = element_blank(),
                 axis.ticks.x = element_line(colour = "grey40",size = 0.5),
                 axis.line = element_line(colour = "grey40",size = 0.5),
                 axis.text.x = element_text(size = 10),
                 axis.title.x = element_text(size = 12),
                 panel.grid.major.y = element_line(colour = NA,size = 0.5),
                 panel.grid.major.x = element_blank())

2 繪制基礎(chǔ)差異基因火山圖

2.1 繪制基礎(chǔ)圖形

####'@繪制基礎(chǔ)圖形
ggplot(df, aes(x = logFC, y = -log10(P.Value), colour = Group))+
  geom_point(size =4, shape = 20, stroke = 0.5)+
  #控制最人氣泡和最小氣泡秒紧,調(diào)節(jié)氣泡相對(duì)大小
  scale_size(limits = c(2,16))+
  ##設(shè)置顏色
  #scale_fill_manual(values = c("#fe0000","#13fc00","#bdbdbd"))+
  scale_color_manual(values=c('steelblue','gray','brown'))+
  ylab('-log10 (Pvalue)')+
  xlab('log2 (FoldChange)')+
  ## 增加橫豎線條
  geom_vline(xintercept = c(-1,1),lty = 2, col = "black", lwd = 0.5)+
  geom_hline(yintercept = -log10(0.05), lty = 2, col = "black", lwd = 0.5)

難點(diǎn)代碼解讀

1.增加橫豎線條

geom_vline()添加垂直輔助線,xintercept表示輔助線的位置绢陌,lty表示線的類型(虛-實(shí)),col表示線的顏色熔恢,lwd表示線的粗細(xì)

geom_hline()添加水平輔助線脐湾,yintercept表示輔助線的位置,lty表示線的類型(虛-實(shí))叙淌,col表示線的顏色秤掌,lwd表示線的粗細(xì)

2.2 設(shè)置火山圖散點(diǎn)的大小

在上面的圖形中愁铺,火山圖中所有的使用size = logCMP進(jìn)行修改

ggplot(df, aes(x = logFC, y = -log10(P.Value), size = logCMP,colour = Group))+
  geom_point(shape = 20, stroke = 0.5)+
  #控制最人氣泡和最小氣泡,調(diào)節(jié)氣泡相對(duì)大小
  scale_size(limits = c(2,16))+
  ##設(shè)置顏色
  #scale_fill_manual(values = c("#fe0000","#13fc00","#bdbdbd"))+
  scale_color_manual(values=c('steelblue','gray','brown'))+
  ylab('-log10 (Pvalue)')+
  xlab('log2 (FoldChange)')+
  ## 增加橫豎線條
  geom_vline(xintercept = c(-1,1),lty = 2, col = "black", lwd = 0.5)+
  geom_hline(yintercept = -log10(0.05), lty = 2, col = "black", lwd = 0.5)

2.2 調(diào)整火山圖的X軸坐標(biāo)

調(diào)整X軸的取值范圍
有時(shí)候闻鉴,我們?cè)诶L制火山圖時(shí)茵乱,會(huì)出現(xiàn)X或Y軸坐標(biāo)較大的現(xiàn)象,對(duì)火山圖整體美觀性較差孟岛,那么適當(dāng)限制基因調(diào)整圖形美觀.

###'@查看差異基因最大值是多少
###'@此步根據(jù)自己的火山圖進(jìn)行設(shè)置是否有需要設(shè)置
max(abs(df$logFC)) 

使用xlim()函數(shù)進(jìn)行修改

ggplot(df, aes(x = logFC, y = -log10(P.Value), size = logCMP,colour = Group))+
  geom_point(shape = 20, stroke = 0.5)+
  #控制最人氣泡和最小氣泡瓶竭,調(diào)節(jié)氣泡相對(duì)大小
  scale_size(limits = c(2,16))+
  ##設(shè)置顏色
  #scale_fill_manual(values = c("#fe0000","#13fc00","#bdbdbd"))+
  scale_color_manual(values=c('steelblue','gray','brown'))+
  ylab('-log10 (Pvalue)')+
  xlab('log2 (FoldChange)')+
  ## 增加橫豎線條
  geom_vline(xintercept = c(-1,1),lty = 2, col = "black", lwd = 0.5)+
  geom_hline(yintercept = -log10(0.05), lty = 2, col = "black", lwd = 0.5)+
  ##設(shè)置X軸的取值范圍
  xlim(c(-1.5,1.5))

2.3 修改圖中圖例

使用ggplot()繪圖最方便就是修改圖形或調(diào)整圖形很方便,但是很多時(shí)間都需要我們自己不斷的練習(xí)渠羞,加深自己印象斤贰。
使用label()修改圖中標(biāo)題和圖例

ggplot(df, aes(x = logFC, y = -log10(P.Value), size = logCMP,colour = Group))+
  geom_point( shape = 20, stroke = 0.5)+
  #控制最人氣泡和最小氣泡,調(diào)節(jié)氣泡相對(duì)大小
  scale_size(limits = c(2,16))+
  ##設(shè)置顏色
  #scale_fill_manual(values = c("#fe0000","#13fc00","#bdbdbd"))+
  scale_color_manual(values=c('steelblue','gray','brown'))+
  # ylab('-log10 (Pvalue)')+
  # xlab('log2 (FoldChange)')+
    labs(x = 'log2 (FoldChange)',
         y = '-log10 (Pvalue)',
         ## 圖例
         fill = "",
         size = "")+
# ## 增加橫豎線條
  geom_vline(xintercept = c(-1,1),lty = 2, col = "black", lwd = 0.5)+
  geom_hline(yintercept = -log10(0.05), lty = 2, col = "black", lwd = 0.5)+
  ## 設(shè)置主題
  theme_classic(
    base_line_size = 0.8  ## 設(shè)置坐標(biāo)軸的粗細(xì)
  )+
  ## 設(shè)置圖例大小
  guides(fill = guide_legend(override.aes = list(size = 8)))

2.4 添加基因名

使用一下命令添加標(biāo)記基因名字

#'@添加關(guān)注的點(diǎn)的基因名
  geom_text_repel(
    data = df[df$P.Value < 0.05 & abs(df$logFC) > 1,],
    aes(label = gene),
    size = 4.5,
    color = "black",
    segment.color = "black", show.legend = FALSE)
ggplot(df, aes(x = logFC, y = -log10(P.Value), size = logCMP,colour = Group))+
  geom_point( shape = 20, stroke = 0.5)+
  #控制最人氣泡和最小氣泡次询,調(diào)節(jié)氣泡相對(duì)大小
  scale_size(limits = c(2,16))+
  ##設(shè)置顏色
  #scale_fill_manual(values = c("#fe0000","#13fc00","#bdbdbd"))+
  scale_color_manual(values=c('steelblue','gray','brown'))+
  ylab('-log10 (Pvalue)')+
  xlab('log2 (FoldChange)')+
#'@添加關(guān)注的點(diǎn)的基因名
  geom_text_repel(
    data = df[df$P.Value < 0.05 & abs(df$logFC) > 1,],
    aes(label = gene),
    size = 4.5,
    color = "black",
    segment.color = "black", show.legend = FALSE)+
  # ## 增加橫豎線條
  geom_vline(xintercept = c(-1,1),lty = 2, col = "black", lwd = 0.5)+
  geom_hline(yintercept = -log10(0.05), lty = 2, col = "black", lwd = 0.5)+
  ## 設(shè)置主題
  theme_classic(
    base_line_size = 0.8  ## 設(shè)置坐標(biāo)軸的粗細(xì)
  )+
  ## 設(shè)置圖例大小
  guides(fill = guide_legend(override.aes = list(size = 8)))

2.5 圖形美化

ggplot(df, aes(x = logFC, y = -log10(P.Value), size = logCMP,colour = Group))+
  geom_point( shape = 20, stroke = 0.5)+
  #控制最人氣泡和最小氣泡荧恍,調(diào)節(jié)氣泡相對(duì)大小
  scale_size(limits = c(2,16))+
  ##設(shè)置顏色
  #scale_fill_manual(values = c("#fe0000","#13fc00","#bdbdbd"))+
  scale_color_manual(values=c('steelblue','gray','brown'))+
  ylab('-log10 (Pvalue)')+
  xlab('log2 (FoldChange)')+
#'@添加關(guān)注的點(diǎn)的基因名
  geom_text_repel(
    data = df[df$P.Value < 0.05 & abs(df$logFC) > 1,],
    aes(label = gene),
    size = 3.5,
    color = "black",
    segment.color = "black", show.legend = FALSE)+
  # ## 增加橫豎線條
  geom_vline(xintercept = c(-1,1),lty = 2, col = "black", lwd = 0.5)+
  geom_hline(yintercept = -log10(0.05), lty = 2, col = "black", lwd = 0.5)+
  ## 設(shè)置主題
  theme_classic(
    base_line_size = 0.8  ## 設(shè)置坐標(biāo)軸的粗細(xì)
  )+
  ## 設(shè)置圖例大小
  guides(fill = guide_legend(override.aes = list(size = 5)))+
  mytheme
  ##設(shè)置主題
  # theme(axis.title.x = element_text(color = "black", 
  #                                   size = 10,
  #                                   face = "bold"),
  #       axis.title.y = element_text(color = "black",
  #                                   size = 10),
  #       ##'@設(shè)置圖例
  #       legend.text = element_text(color = "red",
  #                                  size = 8,
  #                                  face = "bold"))

解讀

  theme(axis.title.x = element_text(color = "black",
                                    size = 10,
                                    face = "bold"),
        axis.title.y = element_text(color = "black",
                                    size = 10),
        ##'@設(shè)置圖例
        legend.text = element_text(color = "red",
                                   size = 8,
                                   face = "bold"))
  1. X軸、Y軸字體調(diào)整axis.title.x/axis.title.y
    color渗蟹、size块饺、bold表示;顏色雌芽、大小授艰、加粗
  2. 圖例legend.text

3 漸變火山圖繪制

該教程在前面的文章中已經(jīng)發(fā)出,感興趣的可以自己查看世落。教程鏈接差異表達(dá)基因火山圖繪制

3.1 數(shù)據(jù)處理

head(df)

把各列數(shù)據(jù)整理成畫(huà)圖所需的格式

### Score列淮腾、或是DESep輸出數(shù)據(jù)
fc <- df$AveExpr
head(fc)
names(fc) <- rownames(dat)  ## 匹配數(shù)據(jù)

### -log10P列
 p <- dat$`-log10P`
names(p) <- names(dat)

3.2 自定義顏色

mycol <- c("#B2DF8A","#FB9A99","#33A02C","#E31A1C","#B15928","#6A3D9A","#CAB2D6","#A6CEE3","#1F78B4","#FDBF6F","#999999","#FF7F00")
cols.names <- unique(df$Group)
cols.code <- mycol[1:length(cols.names)]
names(cols.code) <- cols.names
col <- paste(cols.code[as.character(df$Group)],"BB", sep="")
i <-  df$Group %in% c("Up","Not","Down")

###'@-log10P列
p <- -log10(df$P.Value)
names(p) <- names(df)

###'@size列
size = df$logCMP
names(size) <- rownames(df)

###'@pval列
pp <- df$P.Value
names(pp) <- rownames(df)

3.3 繪圖

plot(df, p, log = 'y',
      col = paste(cols.code[as.character(df$logCMP)], "BB", sep = ""),
     pch = 16,
     # ylab = bquote(~Log[10]~"P value"), 
     # xlab = "Enrich score",
     # 用小泡泡畫(huà)不感興趣的pathway
     cex = ifelse(i, size,1)
     )

# 添加橫線
abline(h=1/0.05, lty=2, lwd=1)
abline(h=1/max(pp[which(p.adjust(pp, "bonf") < 0.001)]), lty=3, lwd=1) #標(biāo)黑圈和文字的閾值

# 添加豎線
abline(v=-0.5, col="blue", lty=2, lwd=1)
abline(v=0.5, col="red", lty=2, lwd=1

w <- which(p.adjust(pp,"bonf") < 0.001) #bonferroni correction
points(fc[w], p[w], pch=1, cex=ifelse(i[w], dat[w,"size"],1))
## Add an alpha value to a colour
add.alpha <- function(col, alpha=1){
  if(missing(col))
    stop("Please provide a vector of colours.")
  apply(sapply(col, col2rgb)/255, 2, 
        function(x) 
          rgb(x[1], x[2], x[3], alpha=alpha))  
}
## 標(biāo)記最顯著的基因
cols.alpha <- add.alpha(cols.code[dat[w,]$group], alpha=0.6)
text(fc[w], p[w], names(fc[w]), 
     pos=4, #1, 2, 3 and 4, respectively indicate positions below, to the left of, above and to the right of the specified coordinates.
     col=cols.alpha)

# 添加size的圖例
par(xpd = TRUE) #all plotting is clipped to the figure region
f <- c(0.01,0.05,0.1,0.25)
s <- sqrt(f*50)
legend("topright",
       inset=c(-0.2,0), #把圖例畫(huà)到圖外
       legend=f, pch=16, pt.cex=s, bty='n', col=paste("#88888888"))

# 添加pathway顏色的圖例
legend("bottomright", 
       inset=c(-0.25,0), #把圖例畫(huà)到圖外
       pch=16, col=cols.code, legend=cols.names, bty="n")

4. 篩選Top5的差異基因進(jìn)行標(biāo)記

4.1 篩選的down和up前5個(gè)(或N個(gè))基因進(jìn)行標(biāo)記

##down
down <- filter(df, Group == "Down") %>% 
  distinct(gene, .keep_all = T) %>%
  top_n(5, -log10(P.Value))

##up top 5
up <- filter(df, Group == "Up") %>% 
  distinct(gene, .keep_all = T) %>%
  top_n(5, -log10(P.Value))
  

4.2繪圖

ggplot(df, aes(x = logFC, y = -log10(P.Value), size = logCMP,colour = Group))+
  geom_point( shape = 20, stroke = 0.5)+
  #控制最人氣泡和最小氣泡,調(diào)節(jié)氣泡相對(duì)大小
  scale_size(limits = c(2,16))+
  ##設(shè)置顏色
  #scale_fill_manual(values = c("#fe0000","#13fc00","#bdbdbd"))+
  scale_color_manual(values=c('steelblue','gray','brown'))+
  #scale_colour_manual(name = "", values = alpha(c("#EB4232","#d8d8d8","#2DB2EB"), 0.7)) +
  ##'@X軸和Y軸限制
  # scale_x_continuous(limits = c(-12, 12),breaks = seq(-12, 12, by = 4)) + 
  # scale_y_continuous(expand = expansion(add = c(0, 0)),limits = c(0, 180),breaks = seq(0, 180, by = 20)) + 
  ylab('-log10 (Pvalue)')+
  xlab('log2 (FoldChange)')+
#'@添加關(guān)注的點(diǎn)的基因名
#'@添加down top gene
  geom_text_repel(
    data = up,aes(x = logFC, y = -log10(P.Value), label = gene),
                      seed = 123,color = 'black',show.legend = FALSE, 
                      min.segment.length = 0,#始終為標(biāo)簽添加指引線段屉佳;若不想添加線段谷朝,則改為Inf
                      segment.linetype = 1, #線段類型,1為實(shí)線,2-6為不同類型虛線
                      force = 2,#重疊標(biāo)簽間的排斥力
                      force_pull = 2,#標(biāo)簽和數(shù)據(jù)點(diǎn)間的吸引力
                      size = 4,
                      box.padding = unit(2, "lines"),
                      point.padding = unit(1, "lines"),#點(diǎn)到線的距離
                      max.overlaps = Inf)+
  ##'@添加up top gene
  geom_text_repel(
    data = down,aes(x = logFC, y = -log10(P.Value), label = gene),
                      seed = 123,
    color = 'black',show.legend = FALSE, 
                      min.segment.length = 0,#始終為標(biāo)簽添加指引線段;若不想添加線段武花,則改為Inf
                      segment.linetype = 1, #線段類型,1為實(shí)線,2-6為不同類型虛線
                      force = 6,#重疊標(biāo)簽間的排斥力
                      force_pull = 1,#標(biāo)簽和數(shù)據(jù)點(diǎn)間的吸引力
                      size = 4,
                      box.padding = unit(2, "lines"),
                      point.padding = unit(1, "lines"),#點(diǎn)到線的距離
                      max.overlaps = Inf)+
  # ## 增加橫豎線條
  geom_vline(xintercept = c(-1,1),lty = 2, col = "black", lwd = 0.5)+
  geom_hline(yintercept = -log10(0.05), lty = 2, col = "black", lwd = 0.5)+
  ## 設(shè)置主題
  theme_classic(
    base_line_size = 0.8  ## 設(shè)置坐標(biāo)軸的粗細(xì)
  )+
  ## 設(shè)置圖例大小
  guides(fill = guide_legend(override.aes = list(size = 5)))+
  mytheme

4.3 對(duì)齊標(biāo)簽

需要重新進(jìn)行調(diào)整坐標(biāo)信息,此坐標(biāo)位置圆凰,可以根據(jù)自己需求進(jìn)行調(diào)整

nudge_x_up = 2.5 - up$logFC
nudge_x_down = -2.5 - down$logFC

通過(guò)添加nudge_x信息即可實(shí)現(xiàn)此功能

ggplot(df, aes(x = logFC, y = -log10(P.Value), size = logCMP,colour = Group))+
  geom_point( shape = 20, stroke = 0.5)+
  #控制最人氣泡和最小氣泡,調(diào)節(jié)氣泡相對(duì)大小
  scale_size(limits = c(2,16))+
  ##設(shè)置顏色
  #scale_fill_manual(values = c("#fe0000","#13fc00","#bdbdbd"))+
  scale_color_manual(values=c('steelblue','gray','brown'))+
  #scale_colour_manual(name = "", values = alpha(c("#EB4232","#d8d8d8","#2DB2EB"), 0.7)) +
  ##'@X軸和Y軸限制
  # scale_x_continuous(limits = c(-12, 12),breaks = seq(-12, 12, by = 4)) + 
  # scale_y_continuous(expand = expansion(add = c(0, 0)),limits = c(0, 180),breaks = seq(0, 180, by = 20)) + 
  ylab('-log10 (Pvalue)')+
  xlab('log2 (FoldChange)')+
#'@添加關(guān)注的點(diǎn)的基因名
#'@添加down top gene
  geom_text_repel(
    data = up,aes(x = logFC, y = -log10(P.Value), label = gene),
                      seed = 123,color = 'black',show.legend = FALSE, 
                      min.segment.length = 0,#始終為標(biāo)簽添加指引線段体箕;若不想添加線段专钉,則改為Inf
                      segment.linetype = 1, #線段類型,1為實(shí)線,2-6為不同類型虛線
                      segment.color = 'black', #線段顏色
                      segment.alpha = 0.5, #線段不透明度
                      nudge_x = nudge_x_up, #標(biāo)簽x軸起始位置調(diào)整
                      direction = "y", #按y軸調(diào)整標(biāo)簽位置方向,若想水平對(duì)齊則為x
                      hjust = 0, #對(duì)齊標(biāo)簽:0右對(duì)齊累铅,1左對(duì)齊跃须,0.5居中
                      force = 2,#重疊標(biāo)簽間的排斥力
                      force_pull = 2,#標(biāo)簽和數(shù)據(jù)點(diǎn)間的吸引力
                      size = 4,
                      box.padding = unit(0.1, "lines"),
                      point.padding = unit(0.1, "lines"),
                      max.overlaps = Inf)+
  ##'@添加up top gene
  geom_text_repel(
    data = down,aes(x = logFC, y = -log10(P.Value), label = gene),
                      seed = 123,color = 'black',show.legend = FALSE, 
                      min.segment.length = 0,#始終為標(biāo)簽添加指引線段;若不想添加線段娃兽,則改為Inf
                      segment.linetype = 1, #線段類型,1為實(shí)線,2-6為不同類型虛線
                      segment.color = 'black', #線段顏色
                      segment.alpha = 0.5, #線段不透明度
                      nudge_x = nudge_x_down, #標(biāo)簽x軸起始位置調(diào)整
                      direction = "y", #按y軸調(diào)整標(biāo)簽位置方向菇民,若想水平對(duì)齊則為x
                      hjust = 1, #對(duì)齊標(biāo)簽:0右對(duì)齊,1左對(duì)齊,0.5居中
                      force = 2,#重疊標(biāo)簽間的排斥力
                      force_pull = 2,#標(biāo)簽和數(shù)據(jù)點(diǎn)間的吸引力
                      size = 4,
                      box.padding = unit(0.1, "lines"),
                      point.padding = unit(0.1, "lines"),
                      max.overlaps = Inf)+
  # ## 增加橫豎線條
  geom_vline(xintercept = c(-1,1),lty = 2, col = "black", lwd = 0.5)+
  geom_hline(yintercept = -log10(0.05), lty = 2, col = "black", lwd = 0.5)+
  ## 設(shè)置主題
  theme_classic(
    base_line_size = 0.8  ## 設(shè)置坐標(biāo)軸的粗細(xì)
  )+
  ## 設(shè)置圖例大小
  guides(fill = guide_legend(override.aes = list(size = 5)))

4.4 添加箭頭

top5 <- filter(df, Group != "Stable") %>% distinct(gene, .keep_all = T) %>% top_n(5, -log10(P.Value))
ggplot(df, aes(x = logFC, y = -log10(P.Value), size = logCMP,colour = Group))+
  geom_point( shape = 20, stroke = 0.5)+
  #控制最人氣泡和最小氣泡第练,調(diào)節(jié)氣泡相對(duì)大小
  scale_size(limits = c(2,16))+
  ##設(shè)置顏色
  #scale_fill_manual(values = c("#fe0000","#13fc00","#bdbdbd"))+
  scale_color_manual(values=c('steelblue','gray','brown'))+
  #scale_colour_manual(name = "", values = alpha(c("#EB4232","#d8d8d8","#2DB2EB"), 0.7)) +
  ##'@X軸和Y軸限制
  # scale_x_continuous(limits = c(-12, 12),breaks = seq(-12, 12, by = 4)) + 
  # scale_y_continuous(expand = expansion(add = c(0, 0)),limits = c(0, 180),breaks = seq(0, 180, by = 20)) + 
  ylab('-log10 (Pvalue)')+
  xlab('log2 (FoldChange)')+
  ##'@添加箭頭
  geom_text_repel(data = top5,aes(x = logFC, y = -log10(P.Value), label = gene),
                      seed = 2345,color = 'black',show.legend = FALSE, 
                      min.segment.length = 1,#始終為標(biāo)簽添加指引線段阔馋;若不想添加線段,則改為Inf
                      arrow = arrow(length = unit(0.02, "npc"),type = "open", ends = "last"),
                      force = 10,force_pull = 1,
                      size = 4,
                      box.padding = 2,point.padding = 1,
                      max.overlaps = Inf)

5 漸變火山圖

5.1 加載所需的包

#devtools::install_github("BioSenior/ggvolcano")
library(ggVolcano)
library(RColorBrewer)

5.2 繪圖

df[1:10,1:9]
gradual_volcano(df, x = "logFC", y = "P.Value",
                      label = "gene", 
                label_number = 5, ## 顯示top5的基因名
                output = FALSE)

修改顯示顏色

gradual_volcano(df, x = "logFC", y = "P.Value",
                label = "gene", 
                fills = brewer.pal(5, "RdYlBu"),
                colors = brewer.pal(8, "RdYlBu"),
                label_number = 5, ## 顯示top5的基因名
                output = FALSE)


使用RColorBrewer進(jìn)行修改顏色

gradual_volcano(df, x = "logFC", y = "P.Value",
                label = "gene", 
                label_number = 5, ## 顯示top5的基因名
                output = FALSE)+
  ggsci::scale_color_gsea()+
  ggsci::scale_fill_gsea()

5.3 GO通路火山圖

或你有相關(guān)GO注釋文件复旬,你可以提供給相關(guān)的數(shù)據(jù)垦缅,進(jìn)行繪制。

在這里驹碍,我們不在演示,若你需要凡恍,可以根據(jù)原文的方法進(jìn)行繪制圖形志秃。

ata("term_data")
#  Gene.names   term
#1       TDP1 myelin
#2    YDR387C myelin
#3      MAM33 myelin
#4       BAR1 myelin
#5       IQG1 myelin
#6       AIM3 myelin

p1 <- term_volcano(deg_data, term_data,
                   x = "log2FoldChange", y = "padj",
                   label = "row", label_number = 10, output = FALSE)
#修改散點(diǎn)顏色和描邊
library(RColorBrewer)
deg_point_fill <- brewer.pal(5, "RdYlBu")
names(deg_point_fill) <- unique(term_data$term)
p2 <- term_volcano(data, term_data,
                   x = "log2FoldChange", y = "padj",
                   normal_point_color = "#75aadb",
                   deg_point_fill = deg_point_fill,
                   deg_point_color = "grey",
                   legend_background_fill = "#deeffc",
                   label = "row", label_number = 10, output = FALSE)

本教程參考鏈接:<學(xué)習(xí)者可以直接訪問(wèn)原文鏈接>

  1. https://mp.weixin.qq.com/s/wkUxY_zzYnCDwAPD0btHow
  2. https://mp.weixin.qq.com/s/R6yb-sFKRkzGuACs61TbsQ
  3. https://mp.weixin.qq.com/s/TWI-Tt741Gqe9ERzZr23yg
  4. https://mp.weixin.qq.com/s/yVahDcmuUU7cPikTt4ahNg

往期文章:

1. 復(fù)現(xiàn)SCI文章系列專欄

2. 《生信知識(shí)庫(kù)訂閱須知》,同步更新,易于搜索與管理嚼酝。

3. 最全WGCNA教程(替換數(shù)據(jù)即可出全部結(jié)果與圖形)


4. 精美圖形繪制教程

5. 轉(zhuǎn)錄組分析教程

轉(zhuǎn)錄組上游分析教程[零基礎(chǔ)]

小杜的生信筆記 浮还,主要發(fā)表或收錄生物信息學(xué)的教程,以及基于R的分析和可視化(包括數(shù)據(jù)分析闽巩,圖形繪制等)钧舌;分享感興趣的文獻(xiàn)和學(xué)習(xí)資料!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市涎跨,隨后出現(xiàn)的幾起案子洼冻,更是在濱河造成了極大的恐慌,老刑警劉巖隅很,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撞牢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡叔营,警方通過(guò)查閱死者的電腦和手機(jī)屋彪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绒尊,“玉大人畜挥,你說(shuō)我怎么就攤上這事∮て祝” “怎么了蟹但?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)勘究。 經(jīng)常有香客問(wèn)我矮湘,道長(zhǎng),這世上最難降的妖魔是什么口糕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任缅阳,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘十办。我一直安慰自己秀撇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布向族。 她就那樣靜靜地躺著呵燕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪件相。 梳的紋絲不亂的頭發(fā)上再扭,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音夜矗,去河邊找鬼泛范。 笑死,一個(gè)胖子當(dāng)著我的面吹牛紊撕,可吹牛的內(nèi)容都是我干的罢荡。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼对扶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼区赵!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起浪南,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤笼才,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后逞泄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體患整,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年喷众,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了各谚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡到千,死狀恐怖昌渤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情憔四,我是刑警寧澤膀息,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站了赵,受9級(jí)特大地震影響潜支,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柿汛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一冗酿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦裁替、人聲如沸项玛。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)襟沮。三九已至,卻和暖如春昌腰,著一層夾襖步出監(jiān)牢的瞬間开伏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工遭商, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留硅则,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓株婴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親暑认。 傳聞我的和親對(duì)象是個(gè)殘疾皇子困介,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容