2019-04-01

画相关性分析图的韦恩图部分:
使用VennDiagram包
最普通的功能是venn.diagram(),输入的是向量(最多五个集合),会自动生成韦恩图,有许多参数可以选择。也有较详细的功能,如两个集合比较、三个集合比较的功能。与venn.diagram不同的是,draw.pairwise.venn(两个集合比较)功能输入的参数是集合1的数量、集合2的数量以及共有元素的数量。在相关性分析中,我们想找出差异表达和差异甲基化基因的相关性,所以属于两个集合比较。除了画图,还需要让用户知道是哪些基因是overlap的,所以可以用专门针对两个集合比较的功能,顺便找出overlap的基因。准备输入的数据是之前算出来的有差异表达和差异甲基化的genelist,命名为de_genelist和dm_genelist。为了找出它们共有的基因,要运用到intersect()函数,这个函数是取两个集合之间的交集的,集合中可以是数值、字符串等。拓展:并集union()、找不同setdiff(x,y)取x中与y不同的元素、判断相同setequal()只有完全相同的时候才返回TRUE。
先试一下这个函数的功能:

venn.plot <- draw.pairwise.venn(100, 70, 30, c("First", "Second"));
grid.draw(venn.plot);
grid.newpage();

结果如图:


image.png

可以看到基本的信息都有了,但是可以把它做得美观一些

venn.plot <- draw.pairwise.venn(area1 =  100, 
                                    area2 =  70, 
                                    cross.area = 30, 
                                    category = c("First", "Second"), 
                                    fill = c("#F29B05","#A1D490"),
                                    ext.text = TRUE,
                                    ext.percent = c(0.1,0.1,0.1),
                                    ext.length = 0.6,
                                    label.col = rep("gray10",3),
                                    lwd = 0,
                                    cex = 2,
                                    lty = "blank",
                                    alpha = rep(0.3, 2),
                                    fontface = rep("bold",3),
                                    fontfamily = rep("sans",3), 
                                    cat.cex = 1.5,
                                    cat.fontface = rep("plain",2),
                                    cat.fontfamily = rep("sans",2),
                                    cat.pos = c(0, 0),
                                    print.mode = c("raw","percent"))
    grid.draw(venn.plot)
image.png

经过对参数的调整,这样就比较美观了。

进入正题:
所以取两个基因集之间的交集是:

overlap <- intersect(de_genelist, dm_genelist)

画韦恩图:

venn.plot <- draw.pairwise.venn(area1 =  length(de_genelist), 
                                    area2 =  length(dm_genelist), 
                                    cross.area = length(overlap), 
                                    category = c("Different Expression Genes", "Different Methylation Genes"),  #集合的名字
                                    fill = c("#F29B05","#A1D490"), #集合填充的颜色
                                    ext.text = TRUE, #是否在韦恩图的某一部分太小时把其中标签放在外面
                                    ext.percent = c(0.1,0.1,0.1), #在某一部分小于这个值时才把标签放在外面
                                    ext.length = 0.6, #连接外置标签和其指示部分的线长比例
                                    label.col = rep("gray10",3), #每部分标签的颜色
                                    lwd = 0, #集合外围的线的宽度
                                    cex = 2, #标签字体大小
                                    lty = "blank", #集合外围的线的样式,这里是无
                                    alpha = rep(0.3, 2), #透明度,默认是0.5
                                    fontface = rep("bold",3), #标签的字体样式,这里是加粗
                                    fontfamily = rep("sans",3),  #标签的字体,默认timesnewroman
                                    cat.cex = 1.5, #集合名字的大小
                                    cat.fontface = rep("plain",2), #集合名字的样式
                                    cat.fontfamily = rep("sans",2), #集合名字的字体
                                    cat.pos = c(0, 0), #集合名字的位置
                                    print.mode = c("raw","percent")) #标签以数字展示还是百分比展示,这里是上数字下百分比
    grid.draw(venn.plot) #画图

完成
散点图:


image.png

目标是做到上面的图

cor_plot <- function(CoxExpPlotData,gene1,gene2,cormethod="spearman"){
  library("ggplot2")
    # cor_df = data.frame(CoxExpPlotData, 
    #   gene1 = CoxExpPlotData[,gene1],
    #   gene2 = CoxExpPlotData[,gene2])
    pcutoff=0.05
    CoxTest = cor.test(CoxExpPlotData[, gene1], CoxExpPlotData[, gene2], method = cormethod)

  if(cormethod == "pearson"){
    plottitle <- paste0(cormethod,", R = ", signif(CoxTest$estimate[[1]], 3), "\nP value = ", signif(CoxTest$p.value, 4), sep = "")
  }else if(cormethod == "spearman"){
    plottitle <- paste0(cormethod,", rho = ", signif(CoxTest$estimate[[1]], 3), "\nP value = ", signif(CoxTest$p.value, 4), sep = "")
  }else if (cormethod == "kendall"){
    plottitle <- paste0(cormethod,", tau = ", signif(CoxTest$estimate[[1]], 3), "\nP value = ", signif(CoxTest$p.value, 4), sep = "")
  }
  
  print(paste("pvalue =", round(CoxTest$p.value, 4)))
  if(CoxTest$p.value <= pcutoff){
    CoxExpPoint = ggplot(data = CoxExpPlotData, aes_string(x= gene1, y = gene2))+theme_classic()+
      geom_point(size = 2, color = "gray36")+
      annotate("text",x=-Inf,y=Inf,label=plottitle,hjust=-.2,vjust=2)+
      stat_smooth(method = lm, se = FALSE, colour = "#191970")+
      ylab(paste(gene2, "Exp.", sep = " "))+xlab(paste(gene1, "Exp.",  sep = " "))+
      scale_y_continuous(expand = c(0, 0))+scale_x_continuous(expand = c(0, 0))+
      theme(plot.title = element_text(size = 15, angle = 0, face = "plain", colour = "black", hjust = 0.5, vjust = -0.5),
        axis.title.x = element_text(size = 15, angle = 0, face = "plain", colour = "black"),
        axis.title.y = element_text(size = 15, angle = 90, face = "plain", colour = "black"),
        axis.text.x = element_text(size = 15, angle = 0, face = "plain", colour = "black"),
        axis.text.y = element_text(size = 15, angle = 0, face = "plain", colour = "black"))}
  return(CoxExpPoint)
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 推荐系统是为用户推荐所需商品的软件工具和技术。也即是向用户建议有用物品的软件工具和技术。这种建议适用于多种决策过程...
    T_129e阅读 332评论 0 0
  • 1.基于内容的推荐系统: 推荐系统以个性化的方式指引用户在众多选择中找到感兴趣的东西。基于内容的推荐系统会发掘用户...
    T_129e阅读 446评论 0 1
  • 随着技术的积淀,AI正在走出象牙塔和实验室,步入商业世界,成为撬动社会发展和经济增长的新杠杆。人工智能的发展为世界...
    Feather轻飞阅读 352评论 0 0
  • 20160721 文/纪汐 今天心血来潮,开始翻翻之前认识的一些书评人的豆瓣主页,其中胡阿忧的日记“再坚持一会儿”...
    纪汐阅读 280评论 0 0
  • 明明是坐了一天怎么还是感觉这么累! 我能说有点单调无聊,不喜欢么。 回来后心烦意乱,煮了点粥。 打开冰箱发现,馒头...
    桐羽2018阅读 120评论 0 1