• 【R】表达矩阵指定绘制两样本的相关性散点图?


    表达矩阵

    image.png

    要做两两样本的相关性散点图,并计算标明相关系数。

    编写函数要点:

    • 直接在aes中传参是不行的
    • 线性回归表达式

    函数

    方法1:用!!ensym

    myplot <- function(indata, inx, iny){
      nms <- names(indata)
      x <- nms[inx]
      y <- nms[iny]
      regression <- paste0(x, " ~ ", y)
      dat.lm <- lm(as.formula(regression), data = indata)
      r <- sprintf("italic(r) == %.2f",sqrt(summary(dat.lm)$r.squared))
      labels <- data.frame(r=r,stringsAsFactors = FALSE)
      
      ggplot(indata,aes(x=!!ensym(x), y=!!ensym(y)))+geom_point() + 
        geom_smooth(method = lm) + 
        labs(x=paste0(x," (log2 intensity)"),y=paste0(y," (log2 intensity)")) +
        geom_text(data=labels,mapping=aes(x = 15,y=30,label=r),parse = TRUE,inherit.aes = FALSE,size = 6)
    }
    
    p1 <- myplot(indata=dia,inx=2,iny=3)
    

    image.png

    方法2:用environment

    showplot1<-function(indata, inx, iny) {
      dat <- indata
      p <- ggplot(dat, aes(x=dat[,inx], y=dat[,iny]), environment = environment())
      p <- p + geom_point()
      print(p)
    }
    showplot1(dia,2,3)
    

    image.png

    方法3:用aes_string

    showplot1 <- function(indata, inx, iny) {
      x <- names(indata)[inx] 
      y <- names(indata)[iny] 
      p <- ggplot(indata, aes_string(x = x, y = y))
      p + geom_point()
    }
    showplot1(dia,2,3)
    

    image.png

    两两样本的相关性散点图可以用循环生成组合图。不赘述。

    Ref: https://stackoverflow.com/questions/15323269/addressing-x-and-y-in-aes-by-variable-number

  • 相关阅读:
    构建之法 阅读笔记01
    个人作业1 -数组
    进度一
    开课博客
    生活尝试
    人月神话3
    安卓开发工具
    人月神话 2
    Qt 的入门小程序
    提问的智慧 摘抄(How To Ask Questions The Smart Way)
  • 原文地址:https://www.cnblogs.com/jessepeng/p/12787598.html
Copyright © 2020-2023  润新知