繁体   English   中英

R 中的火山图:添加细节:仅着色公因子

[英]volcano plot in R: adding details: coloring common factors only

我在为某些基因着色以指定 2 个数据集(whole_colon/火山)中的常见基因时遇到问题。 下面的代码运行良好。 然而,问题是我想添加一些非常棘手的细节。

我想为常见基因应用不同的颜色(红色会很棒):仅当满足此声明时:(whole_colon$genes==volcano$genes)。 我试图将组区分为 (specified_increased/specified_decresed),但遗憾的是没有成功。

这是我的代码。

非常感谢提前。

    #volcano plot using ggplot2
    library(data.table)
    # Adding group to decipher if the gene is significant or not:
    whole_colon <- data.frame(whole_colon)
    whole_colon["group"] <- "NotSignificant"
    whole_colon[which(whole_colon['FDR'] < 0.05 & whole_colon['logFC'] > 1.5),"group"] <- "Increased"
    whole_colon[which(volcano['FDR'] < 0.05 & volcano['logFC'] > 1.5),"group"] <- "colon_Increased_specialized"
    whole_colon[which(volcano['FDR'] < 0.05 & volcano['logFC'] < -1.5),"group"] <- "colon_Decreased_specialized"

    with(subset(whole_colon , FDR<0.05), points(logFC, -log10(FDR), pch=20,col="red"), whole_colon$genes==volcano$genes)

    library(ggplot2)
    ggplot(whole_colon, aes(x = logFC, y = -log10(FDR), color = group))+
      scale_colour_manual(values = cols) +
      ggtitle(label = "Volcano Plot", subtitle = "colon specific volcano plot") +
      geom_point(size = 2.5, alpha = 1, na.rm = T) +
      theme_bw(base_size = 14) + 
      theme(legend.position = "right") + 
      xlab(expression(log[2]("logFC"))) + 
      ylab(expression(-log[10]("FDR"))) +
      geom_hline(yintercept = 1.30102, colour="#990000", linetype="dashed") + 
      geom_vline(xintercept = 1.5849, colour="#990000", linetype="dashed") + 
      geom_vline(xintercept = -1.5849, colour="#990000", linetype="dashed")+ 
      scale_y_continuous(trans = "log1p")

这给了我一个看起来像这样的受损图像。 (当它们具有与“火山数据”相同的基因时,我希望“整体结肠数据”被完全标记,同时呈红色)

在此处输入图片说明

以下是来自 Whole_colon 和火山 whole_colon 的一些数据子集:

    genes   logFC       FDR             group   
1   CST1    9.554742    5.64e-45    Increased
3   OTOP2   -9.408177   5.76e-32    Decreased
4   COL11A1 6.825363    1.00e-31    Increased
5   INHBA   6.271879    2.07e-30    Increased
6   MMP7    7.594926    2.07e-30    Increased
7   BEST4   -7.756451   8.30e-30    Decreased
8   COL10A1 7.634386    1.82e-23    Increased
9   MMP11   4.767644    2.70e-23    Increased
10  GUCA2B  -6.346156   2.17e-21    Decreased
11  KRT6B   11.801550   5.37e-20    Increased
12  WNT2    9.485133    6.47e-20    Increased
13  COL8A1  3.974965    6.47e-20    Increase

火山:

     genes   logFC       FDR             group    
1   INHBA   6.271879    2.070000e-30    Increased
2   COL10A1 7.634386    1.820000e-23    Increased
3   WNT2    9.485133    6.470000e-20    Increased
4   COL8A1  3.974965    6.470000e-20    Increased
5   THBS2   4.104176    2.510000e-19    Increased
6   BGN     3.524484    5.930000e-18    Increased
7   COMP    11.916956   2.740000e-17    Increased
9   SULF1   3.540374    1.290000e-15    Increased
10  CTHRC1  3.937028    4.620000e-14    Increased
11  TRIM29  3.827088    1.460000e-11    Increased
12  SLC6A20 5.060538    5.820000e-11    Increased
13  SFRP4   5.924330    8.010000e-11    Increased
14  CDH3    5.330732    8.940000e-11    Increased
15  ESM1    6.491496    3.380000e-10    Increased
614 TDP2    -1.801368   0.002722461     NotSignificant
615 EPHX2   -1.721039   0.002722461     NotSignificant
616 RAVER2  -1.581812   0.002749728     NotSignificant
617 BMP6    -2.702780   0.002775460     Increased
619 SCNN1G  -4.012111   0.002870500     Increased
620 SLC52A3 -1.868920   0.002931197     NotSignificant
621 VIPR1   -1.556238   0.002945578     NotSignificant
622 SUCLG2  -1.720993   0.003059717     NotSignificant

提供的示例数据集不完整,因为没有重叠,因此很难根据它对代码进行着色。 尝试以下操作,关键是您不能使用== ,而是使用%in%返回一个布尔值,说明您的whole_colon中的基因是否在volcano

whole_colon=structure(list(genes = structure(c(5L, 11L, 3L, 
7L, 10L, 1L, 
2L, 9L, 6L, 8L, 12L, 4L, 13L, 14L), .Label = c("BEST4", "COL10A1", 
"COL11A1", "COL8A1", "CST1", "GUCA2B", "INHBA", "KRT6B", "MMP11", 
"MMP7", "OTOP2", "WNT2", "ABC", "DEF"), class = "factor"), logFC = c(9.554742, 
-9.408177, 6.825363, 6.271879, 7.594926, -7.756451, 7.634386, 
4.767644, -6.346156, 11.80155, 9.485133, 3.974965, 0.5, -0.5), 
    FDR = c(5.64e-45, 5.76e-32, 1e-31, 2.07e-30, 2.07e-30, 8.3e-30, 
    1.82e-23, 2.7e-23, 2.17e-21, 5.37e-20, 6.47e-20, 6.47e-20, 
    1, 1), group = c("Increased", "Decreased", "Increased", "specific_Increased", 
    "Increased", "Decreased", "specific_Increased", "Increased", 
    "Decreased", "Increased", "specific_Increased", "specific_Increased", 
    "NotSignificant", "NotSignificant")), row.names = c("1", 
"3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", 
"2"), class = "data.frame")

设置组:

#set the decreased and increased like you did:
whole_colon["group"] <- "NotSignificant"
whole_colon[which(whole_colon['FDR'] < 0.05 & whole_colon['logFC'] > 1.5),"group"] <- "Increased"
whole_colon[which(whole_colon['FDR'] < 0.05 & -whole_colon['logFC'] > 1.5),"group"] <- "Decreased"
whole_colon[which(whole_colon['FDR'] < 0.05 & whole_colon['logFC'] > 1.5 & whole_colon$genes %in% volcano$genes),"group"] <- "specific_Increased"
whole_colon[which(whole_colon['FDR'] < 0.05 & whole_colon['logFC'] < -1.5 & whole_colon$genes %in% volcano$genes),"group"] <- "specific_Decreased"

和情节:

cols = c("grey","blue","blue","red","red")
names(cols) = c("NotSignificant","Increased","Decreased",
"specific_Increased","specific_Decreased")

    library(ggplot2)
        ggplot(whole_colon, aes(x = logFC, y = -log10(FDR), color = group))+
          scale_colour_manual(values = cols) +
          ggtitle(label = "Volcano Plot", subtitle = "colon specific volcano plot") +
          geom_point(size = 2.5, alpha = 1, na.rm = T) +
          theme_bw(base_size = 14) + 
          theme(legend.position = "right") + 
          xlab(expression(log[2]("logFC"))) + 
          ylab(expression(-log[10]("FDR"))) +
          geom_hline(yintercept = 1.30102, colour="#990000", linetype="dashed") + 
          geom_vline(xintercept = 1.5849, colour="#990000", linetype="dashed") + 
          geom_vline(xintercept = -1.5849, colour="#990000", linetype="dashed")+ 
          scale_y_continuous(trans = "log1p")

#

在此处输入图片说明

我想我解决了这个问题。 很简单,多加一句,这个问题就解决了。 在调整了@StupidWolf 的建议和 col 的重新定义过程后,我得到了我想要的图像。

cols<- c(red="red", orange="orange", NotSignificant="darkgrey", Increased= "#00B2FF" ,Decreased="#00B2FF", specific_Increased="#ff4d00", specific_Decreased="#ff4d00" )
head(cols)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM