前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2分面图形自定义添加回归曲线R值

ggplot2分面图形自定义添加回归曲线R值

作者头像
R语言数据分析指南
发布2022-12-20 19:44:47
7590
发布2022-12-20 19:44:47
举报

❝本节来介绍如何自定义给分面图形添加R值与P值,通过两个案例来进行展示❞

加载R包

代码语言:javascript
复制
library(tidyverse)
library(gapminder)
library(ggpmisc)
library(ggsci)
library(grid)

导入数据

代码语言:javascript
复制
df <- read_tsv("data.xls") %>% filter(!continent %in% c("Oceania","Americas"),year >=1982)

数据可视化

❝在这个案例中我们介绍使用「stat_quant_eq」函数自动添加拟合曲线的R值与P值❞

代码语言:javascript
复制
df %>% ggplot(aes(gdpPercap,lifeExp,color=continent))+
  geom_point(size=2.5,aes(color=continent))+
  geom_smooth(aes(color=continent),method = 'lm', se = TRUE, show.legend=FALSE)+
  facet_wrap(.~year,scales="free_x",nrow=2,ncol=3)+
  scale_color_npg()+
  stat_poly_eq(method = 'lm',
               aes(label=paste(after_stat(rr.label),
                               after_stat(p.value.label),sep = "*\", \"*")),
               size=3)+
  labs(x=NULL,y=NULL)+
  theme_bw()+
  theme(axis.text=element_text(colour='black',size=9),
        legend.position = c(0.94,0.1),
        legend.background = element_blank(),
        legend.key = element_blank(),
        legend.title = element_blank())

❝可以看到使用「ggpmisc::stat_poly_eq」函数很轻松的添加上了R值与P值,但是实际中也许会存函数无法自动添加的情况,那么就需要使用代码自定义去添加,如果图表只有一个那样操作很是轻松,但若是图表采用分面的形式绘制那么就需要自定义函数来添加文本 ❞

自定义注释函数

代码语言:javascript
复制
annotation_custom2 <- function (grob, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf, data) 
{
  layer(data = data, stat = StatIdentity, position = PositionIdentity, 
        geom = ggplot2:::GeomCustomAnn,
        inherit.aes = TRUE, params = list(grob = grob, 
                                          xmin = xmin, xmax = xmax, 
                                          ymin = ymin, ymax = ymax))
}

构建文本信息

代码语言:javascript
复制
grob1 <- grobTree(textGrob(expression(paste(italic(R^2),"=0.25, ",italic(p),"<0.001")),
                           x=0.1,y=0.95, hjust=0,gp=gpar(col="#DC0000FF", fontsize=10)))

grob2 <- grobTree(textGrob(expression(paste(italic(R^2),"=0.29, ",italic(p),"<0.001")),
                           x=0.1,  y=0.88, hjust=0,gp=gpar(col="#4DBBD5FF", fontsize=10)))

grob3 <- grobTree(textGrob(expression(paste(italic(R^2),"=0.51, ",italic(p),"<0.001")),
                           x=0.1,  y=0.82, hjust=0,gp=gpar(col="#00A087FF", fontsize=10)))

案例二

代码语言:javascript
复制
df %>% ggplot(aes(gdpPercap,lifeExp,color=continent))+
  geom_point(size=2.5,aes(color=continent))+
  geom_smooth(aes(color=continent),method = 'lm', se = TRUE, show.legend=FALSE)+
  facet_wrap(.~year,scales="free_x",nrow=2,ncol=3)+
  scale_color_npg()+
  labs(x=NULL,y=NULL)+
  theme_bw()+
  theme(axis.text=element_text(colour='black',size=9),
        legend.position = c(0.94,0.1),
        legend.background = element_blank(),
        legend.key = element_blank(),
        legend.title = element_blank())+
  annotation_custom2(grob1,data=df %>% filter(year==1982))+
  annotation_custom2(grob2,data=df %>% filter(year==1982))+
  annotation_custom2(grob3,data=df %>% filter(year==1982))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ❝本节来介绍如何自定义给分面图形添加R值与P值,通过两个案例来进行展示❞
  • 加载R包
  • 导入数据
  • 数据可视化
  • 自定义注释函数
  • 构建文本信息
  • 案例二
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档