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


通常,您可能希望在 R 中的直方图上叠加正态曲线。

以下示例展示了如何在基本 R 和ggplot2中执行此操作。

示例 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 use for normal curve
x_values <- seq(min(data), max(data), length = 100 )
y_values <- dnorm(x_values, mean = mean(data), sd = sd(data)) 
y_values <- y_values * diff(hist_data$mids[1:2]) * length(data) 

#overlay normal curve on histogram
lines(x_values, y_values, lwd = 2 )

将正态曲线叠加在R中的直方图上

图中的黑色曲线代表正常曲线。

随意使用collwdlty参数分别修改颜色、宽度和线型:

 #overlay normal curve with custom aesthetics
lines(x_values, y_values, col=' red ', lwd= 5 , lty=' dashed ')

示例2:将正态曲线叠加在ggplot2中的直方图上

我们可以使用以下代码在ggplot2中创建直方图,并在直方图上叠加正态曲线:

 library (ggplot2)

#make this example reproducible
set. seed ( 0 )

#define data
data <- data. frame (x=rnorm( 1000 ))

#create histogram and overlay normal curve
ggplot(data, aes(x)) +
  geom_histogram(aes(y = ..density..), fill=' lightgray ', col=' black ') +
  stat_function(fun = dnorm, args = list(mean=mean(data$x), sd=sd(data$x)))

在R中的ggplot2中叠加直方图

图中的黑色曲线代表正常曲线。

随意使用collwdlty参数分别修改颜色、宽度和线型:

 #overlay normal curve with custom aesthetics
ggplot(data, aes(x)) +
  geom_histogram(aes(y = ..density..), fill=' lightgray ', col=' black ') +
  stat_function(fun = dnorm, args = list(mean=mean(data$x), sd=sd(data$x)),
                col=' red ', lwd= 2 , lty=' dashed '))

注意:您可以在此处找到stat_function的完整文档。

其他资源

以下教程解释了如何在 R 中执行其他常见操作:

如何在 R 中创建相对频率直方图
如何在 R 中指定直方图中断

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注