大数跨境
0
0

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

ggplot2分面图形自定义添加回归曲线R值 R语言数据分析指南
2022-11-04
1

欢迎关注R语言数据分析指南

本节来介绍如何自定义给分面图形添加R值与P值,通过两个案例来进行展示,「数据+代码已经上传VIP群,加群的观众老爷请自行下载」

有需要学习数据可视化的朋友欢迎加入小编2022年度VIP群,目前群内已经上传公众号文档「数据+代码约260篇」VIP交流群(1)已经500人满员,随着内容不断增多,为了更好的创做内容现在进群需「付费149元」 双十一临近小编也做一波优惠活动 「从即日起至11月底无需转发文档到朋友圈积赞,可直接已129元的价格入群」

淘宝店铺个性化绘图服务

最近有部分观众老爷找小编做个性化绘图,为了给观众老爷提供更加优质的服务;小编开通了 「淘宝店铺(R语言数据分析指南)」 ,有特殊绘图需求的欢迎关注咨询

加载R包

library(tidyverse)
library(gapminder)
library(ggpmisc)
library(ggsci)
library(grid)

导入数据

df <- read_tsv("data.xls") %>% filter(!continent %in% c("Oceania","Americas"),year >=1982)

数据可视化

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

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值,但是实际中也许会存函数无法自动添加的情况,那么就需要使用代码自定义去添加,如果图表只有一个那样操作很是轻松,但若是图表采用分面的形式绘制那么就需要自定义函数来添加文本

自定义注释函数

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))
}

构建文本信息

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

案例二

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

喜欢的观众老爷欢迎分享转发;「当然更推荐大家加入我的VIP交流群」扫描下方二维码加小编微信「添加小编微信请备注来意,以便高效处理」

小编微信

关注下方公众号下回更新不迷路


往期推荐

[会员专享] ggraph绘制GO富集分析网络图

揭秘ggh4x包的小妙用之绘制多重注释表

通过ggplot2中stat_summary函数快速进行数据统计

[往期案例汇总] 9-10月公众号经典数据可视化案例汇总

R中使用voronoiTreemap包轻松绘制圆形树状图

[会员专享]ggplot2批量绘制蜂窝图

[会员专享] ggraph绘制层次结构网络图

浅谈ggplot2拼图必知的一些小细节

ggplot2绘图添加显著性标记必知细节

[会员专享] circlize自定义绘制多组和弦图

[会员专享]ggplot2优雅绘制环状相关性热图

【声明】内容源于网络
0
0
R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
内容 1180
粉丝 0
R语言数据分析指南 R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
总阅读222
粉丝0
内容1.2k