美文网首页ggplot2绘图R语言绘图R语言做图
R绘图(4): 散点图添加相关系数/回归方程

R绘图(4): 散点图添加相关系数/回归方程

作者: TOP生物信息 | 来源:发表于2021-03-14 20:06 被阅读0次

    属于比较常用的技巧。下面我用ggplot2内置数据集进行演示:

    先来看一下,仅有散点和拟合线的图

    df=diamonds[sample(1:dim(diamonds)[1],40),]
    df$price=df$price / 10000
    p=df%>%ggplot(aes(carat,price))+
      geom_point(size=4,alpha=0.3,color="#6baed6")+
      geom_smooth(method = "lm", formula = y~x, color = "#756bb1", fill = "#cbc9e2")+ #颜色选自https://colorbrewer2.org/
      theme_bw()+
      theme(
        panel.grid.major = element_blank(),panel.grid.minor = element_blank()
      )
    p
    ggsave("tmp1.pdf",width = 8,height = 8,units = "cm")
    

    如果想添加拟合的方程,可以使用ggpmisc包的stat_poly_eq()函数,该函数可以拟合多项式方程并生成多种标签,比如p值、决定系数R方,这些由函数计算出来的量通常名称前后有两个点

    ..eq.label..
    ..adj.rr.label..
    ..p.value.label..
    

    对应的代码只有一行,其余代码和上面一样:

    library(ggpmisc)
    p+stat_poly_eq(aes(label=paste(..eq.label..,..adj.rr.label..,..p.value.label..,sep = "~~~~")),formula = y~x,parse=T,size=2.5)
    #这一行paste()中的内容是一个类似Latex的表达,“~”表示空格,parse=T表示将这个语句翻译成可读形式;size=2.5表示字体大小
    ggsave("tmp2.pdf",width = 8,height = 8,units = "cm")
    

    如果需要添加相关系数,可以按照相同的思路,先求出对应的值,再加到stat_poly_eq()的label参数里

    cor=round(cor(df$carat,df$price),2)
    p+stat_poly_eq(aes(label=paste("italic(r)~`=`~",cor,sep = "")),formula = y~x,parse=T,size=4)
    ggsave("tmp3.pdf",width = 8,height = 8,units = "cm")
    

    另外也可以使用ggpubr包的stat_cor()函数,添加相关系数以及p值

    library(ggpubr)
    p+stat_cor()
    ggsave("tmp4.pdf",width = 8,height = 8,units = "cm")
    

    将stat_poly_eq()和stat_cor()结合起来也是可以的,当然两个文本的位置需要调整一下

    p+stat_poly_eq(aes(label=..eq.label..),formula = y~x,parse=T,size=4)+
      stat_cor(label.y=0.9,size=4)
    

    因水平有限,有错误的地方,欢迎批评指正!

    相关文章

      网友评论

        本文标题:R绘图(4): 散点图添加相关系数/回归方程

        本文链接:https://www.haomeiwen.com/subject/nsdccltx.html