如何在 R 中的直方图上叠加正态曲线(2 个示例)

本文提供两个示例展示如何在R中为直方图叠加正态曲线。示例1使用基础R实现,示例2利用ggplot2包,两者均允许自定义线条样式。
摘要由CSDN通过智能技术生成

示例 1:在基础 R 中的直方图上叠加正态曲线
我们可以使用以下代码在基数 R 中创建一个直方图,并在直方图上叠加一条正态曲线:

#make this example reproducible
set.seed(0)

#define data
data <- rnorm(1000)

#create histogram
hist_data <- hist(data)

#define x and y values to 
R语言,你可以使用`ggplot2`包来绘制正态分布的直方图添加一个拟合的正态曲线。首先,你需要安装和加载必要的库,例如`ggplot2`和`reshape2`(如果数据不是长格式)。下面是步骤: 1. **安装和加载库**: ```sh install.packages("ggplot2") # 如果未安装 install.packages("reshape2") library(ggplot2) library(reshape2) # 或者用 dplyr 替换 reshape2,现在 ggplot2 自带 dplyr 功能 ``` 2. **生成随机数据**: 为了展示正态分布,我们可以创建一些随机数。假设你想模拟一个均值为0,标准差为1的正态分布: ```r set.seed(123) # 设置种子保证每次结果一致 data <- rnorm(1000) ``` 3. **绘制直方图**: ```r histogram_data <- data.frame(values = data, bin_number = cut(data, breaks = "fd")) # 使用等距分组 hist_plot <- ggplot(histogram_data, aes(x=bin_number)) + geom_histogram(binwidth = ... , fill = "lightblue", alpha = 0.7) + labs(title = "Normal Distribution Histogram", x = "Value", y = "Frequency") hist_plot ``` 你需要调整 `binwidth` 参数以获取合适的分辨率。 4. **添加正态曲线**: ```r norm_curve <- seq(min(data), max(data), length.out = 100) # 创建x轴范围的线性序列 fit_line <- dnorm(norm_curve, mean(data), sd(data)) # 拟合曲线 hist_plot + geom_line(aes(x=norm_curve, y=fit_line), color="red", size=1) + annotate("text", x = mean(data) + 1 * sd(data), y = 0.95 * max(fit_line), label = expression(paste("Mean = ", mean(data), ", SD = ", sd(data)))) ``` 这里我们使用`dnorm`函数计算正态分布的密度,并在适当的位置标注平均值和标准差。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mrrunsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值