如何在R中使用ggplot2同图绘制经验CDF与自定义理论CDF
可直接运行的完整实现代码
# 未安装依赖包可先运行:install.packages(c("ggplot2", "ggeasy")) library(ggplot2) library(ggeasy) # 输入原始数据 data1 <- c(12.20,23.56,23.74,25.87,31.98,37,41.35,47.38,55.46, 58.36,63.47,68.46,78.26,74.47,81.43,84,92,94, 110,112,119,127,130,133,140,146,155, 159,173,179,194,195,209,249,281,319, 339,432,469,519,633,725,817,1776) df <- data.frame(data1) # 定义理论CDF参数 alpha <- 273.811028 lambda <- 29.834133 beta <- 1.135448 # 自定义理论CDF计算函数 custom_cdf <- function(x) { (alpha^exp(-lambda * x^(-beta)) - 1) / (alpha - 1) } # 绘制对比图 ggplot(df, aes(x = data1)) + # 绘制经验累积分布ECDF,将颜色映射到aes自动生成图例 stat_ecdf(geom = "step", aes(color = "经验累积分布(ECDF)"), linewidth = 1) + # 绘制自定义理论CDF,同样映射颜色生成图例,用虚线区分 stat_function(fun = custom_cdf, aes(color = "理论累积分布(CDF)"), linewidth = 1, linetype = "dashed") + # 配置标签 labs( x = "Time", y = "Fn(x)", title = "ECDF与自定义理论CDF对比图", color = "分布类型" ) + # 自定义两种分布的显示颜色 scale_color_manual(values = c("经验累积分布(ECDF)" = "#165DFF", "理论累积分布(CDF)" = "#FF4D4F")) + theme_light() + easy_center_title()
效果说明
- 自动基于数据范围生成理论CDF的采样点,无需手动计算序列值
- 两种分布的样式可通过修改
linewidth(线宽)、linetype(线型)、scale_color_manual里的色值自行调整 - 图例自动生成,无需额外手动配置
内容的提问来源于stack exchange,提问作者mathz
相关产品推荐
相关产品推荐

