如何在R语言中绘制累积分布图?
R语言绘制累积分布图的几种方法
1. 基础R原生方法
用ecdf()函数生成经验累积分布函数,再通过plot()直接绘制,适合快速出图:
# 以mtcars数据集的mpg变量为例 ecdf_func <- ecdf(mtcars$mpg) plot(ecdf_func, main = "MPG累积分布图", xlab = "每加仑英里数", ylab = "累积概率", col = "darkblue")
- 说明:
ecdf()返回的是一个函数,绘制后x轴是变量取值,y轴是小于等于该值的观测占总样本的比例。
2. ggplot2绘图(更美观灵活)
先加载ggplot2包,用stat_ecdf()图层实现,支持自定义样式:
library(ggplot2) ggplot(mtcars, aes(x = mpg)) + stat_ecdf(geom = "step", col = "darkred", size = 1) + # step是阶梯线,也可以换成geom="line" labs(title = "MPG累积分布图", x = "每加仑英里数", y = "累积概率") + theme_bw() # 切换主题,可选theme_minimal()等
3. 叠加理论累积分布(比如正态分布)
如果需要对比经验分布和理论分布,可手动计算理论累积概率后叠加:
# 生成x轴序列 x_range <- seq(min(mtcars$mpg), max(mtcars$mpg), length.out = 100) # 计算正态分布的累积概率 norm_cdf <- pnorm(x_range, mean = mean(mtcars$mpg), sd = sd(mtcars$mpg)) # 先画经验分布 plot(ecdf_func, main = "经验vs理论累积分布", xlab = "每加仑英里数", ylab = "累积概率") # 叠加理论分布曲线 lines(x_range, norm_cdf, col = "green", lty = 2, lwd = 1.5) # 添加图例 legend("bottomright", legend = c("经验分布", "正态理论分布"), col = c("black", "green"), lty = c(1, 2))
内容的提问来源于stack exchange,提问作者Ulffer
相关产品推荐
相关产品推荐

