欢迎关注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交流群」扫描下方二维码加小编微信「添加小编微信请备注来意,以便高效处理」
❞
小编微信

关注下方公众号下回更新不迷路
往期推荐

