该内容已被发布者删除 该内容被自由微信恢复
文章于 3月31日 下午 6:00 被检测为删除。
查看原文
被用户删除
其他

在ggplot2中轻松添加趋势线与置信区间!

小陈的R语言笔记 小陈的R语言笔記 2024-03-31

ggtrendline包

ggtrendline是一个用于为ggplot2添加趋势线和置信区间的包

内置的 'ggtrendline()' 函数包括以下模型:

"line2P" - 线性模型:

  • 公式: y = a*x + b
  • 描述: 这是一个简单的线性模型,其中 a 是斜率,b 是截距。它用于描述两个变量之间的线性关系。

"line3P" - 二次模型:

  • 公式: y = ax^2 + bx + c
  • 描述: 这是一个二次模型,它描述了一个抛物线形状的关系。a、b 和 c 是模型的参数,其中 a 控制抛物线的开口方向和大小。

"log2P" - 对数模型:

  • 公式: y = a*ln(x) + b
  • 描述: 对数模型用于描述当 y 的增长与 x 的对数成正比时的情况。这在某些类型的增长数据中很常见,例如人口增长或某些类型的经济增长。

"exp2P" - 指数模型 (2参数):

  • 公式: y = aexp(bx)
  • 描述: 这是一个指数模型,其中 y 的值随 x 的增加而按指数方式增长或衰减。a 是基础值,而 b 控制增长的速率。

"exp3P" - 指数模型 (3参数):

  • 公式: y = aexp(bx) + c
  • 描述: 这是另一个指数模型,但有一个额外的截距项 c。这使得模型更加灵活,可以描述更复杂的指数关系。

"power2P" - 幂模型:

  • 公式: y = a*x^b
  • 描述: 幂模型描述了 y 与 x 的幂次关系。当 b 不为 1 时,这种关系是非线性的。这在描述某些物理现象或经济关系时很有用。

"power3P" - 幂模型 (3参数):

  • 公式: y = a*x^b + c
  • 描述: 这是幂模型的一个变体,它有一个额外的截距项 c。这增加了模型的灵活性,使其能够描述更广泛的幂次关系。

安装和加载R包

从CRAN获取发布版本:

install.packages("ggtrendline")

从Github获取开发版本:

install.packages("devtools")
devtools::install_github("PhDMeiwp/ggtrendline@master", force = TRUE)

加载R包:

library(ggplot2)
library(ggtrendline)

创建数据

data <-  data.frame(
  x <- c(1, 3, 6, 9,  13, 17),
  y <- c(5, 7, 12, 13, 13.2, 14.5)
)

添加趋势线

# ggtrendline 函数用于在 ggplot2 图形上添加趋势线
# model: 拟合数据的模型类型,"line2P" 表示一个二次多项式模型(即 y = ax^2 + bx + c)
ggtrendline(x, y, model = "line2P")

添加数据点

# ggtrendline 函数:在散点图上添加趋势线  
# model: 拟合数据的模型类型,"line3P" 可能表示一个三次多项式模型(即 y = ax^3 + bx^2 + cx + d)  
ggtrendline(x, y, model = "line3P") +  
  # 在图上添加数据点
  geom_point(aes(x, y)) +  
  # 设置主题
  theme_bw()

不填充置信区间

# ggtrendline 函数:在散点图上添加趋势线  
# model: 拟合数据的模型类型,"log2P" 可能表示一个二次对数模型(即 log(y) = ax^2 + bx + c)  
# CI.fill: 置信区间的填充颜色,NA 表示不填充置信区间  
ggtrendline(x, y, model = "log2P", CI.fill = NA) +  
  # 在图上添加数据点  
  geom_point(aes(x, y)) +  
  # 设置主题 
  theme_classic()

设置趋势线和数据点

# ggtrendline 函数:在散点图上添加趋势线  
# model: 拟合数据的模型类型,"exp2P" 可能表示一个二次指数模型  
# linecolor: 趋势线的颜色,这里设置为红色 
# linetype: 趋势线的类型,1 通常表示实线  
# linewidth: 趋势线的宽度,这里设置为 1  
ggtrendline(x, y, model = "exp2P", linecolor = "red", linetype = 1, linewidth = 1) +  
  
  # geom_point 函数:在图上添加数据点  
  # color: 数据点的颜色,这里设置为红色  
  # shape: 数据点的形状,1 通常表示圆形  
  # size: 数据点的大小,这里设置为 3  
  geom_point(aes(x, y), color = "red", shape = 1, size = 3)

设置置信区间

# ggtrendline 函数:在散点图上添加趋势线及置信区间  
# model: 拟合数据的模型类型,"exp3P" 表示一个三次指数模型  
# CI.level: 置信区间的置信水平,这里设置为 0.99,即 99% 置信区间  
# CI.fill: 置信区间的填充颜色,这里设置为蓝色  
# CI.alpha: 置信区间填充颜色的透明度,0.1 表示较为透明  
# CI.color: 置信区间边界线的颜色,NA 表示不绘制边界线  
# CI.lty: 置信区间边界线的线型,2 通常表示虚线  
# CI.lwd: 置信区间边界线的线宽,这里设置为 1.5  

ggtrendline(x, y, model = "exp3P", CI.level = 0.99,   
            CI.fill = "blue", CI.alpha = 0.1, CI.color = NA, CI.lty = 2, CI.lwd = 1.5) +  
  
  # 在图上添加数据点  
  geom_point(aes(x, y))

绘制多组数据

# 加载iris数据集  
data("iris")  

# 提取Petal Width和Petal Length  
x <- iris$Petal.Width  
y <- iris$Petal.Length  
group <- iris$Species  

ggtrendline(x,y,"exp3P") + 
  geom_point(aes(x,y,color=group))+
  theme_classic()

欢迎加入

参考资料:https://github.com/PhDMeiwp/ggtrendline?tab=readme-ov-file



继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存