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

Posted jessepeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R表达矩阵指定绘制两样本的相关性散点图?相关的知识,希望对你有一定的参考价值。

表达矩阵

技术图片

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

编写函数要点:

  • 直接在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)

技术图片

方法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)

技术图片

方法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)

技术图片

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

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

以上是关于R表达矩阵指定绘制两样本的相关性散点图?的主要内容,如果未能解决你的问题,请参考以下文章

2018-10-31用R绘制散点图矩阵(成对的散点图)

R语言绘图:复杂散点图绘制

R语言使用car包的scatterplotMatrix函数绘制散点图矩阵并添加线性回归曲线平滑曲线以及对角线核密度图和轴须图rugcor函数计算变量两两相关性

R语言使用car包的scatterplotMatrix函数绘制散点图矩阵并添加线性和loess拟合线在主对角线上放置箱图密度或直方图在图像边缘添加轴须图rug可以基于分组变量绘制散点图矩阵

R语言可视化:散点图散点图和折线图(line charts)3D散点图旋转3D散点图气泡图corrgram包可视化相关性矩阵马赛克图( Mosaic plots)hexbin密度图

R绘图基础指南 3. 散点图(合集)