R语言中,如何在直方图中添加正态曲线

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言中,如何在直方图中添加正态曲线相关的知识,希望对你有一定的参考价值。

如题,我有一串数据大约是20个,画好了直方图,但是添加正态曲线lines(density(b),col="red", lwd =3)之后,图像上出现了一条与x轴重合的红线,请问是为什么?要怎么才能添加正态曲线?(PS:我求了回归标准化残差,现在要添加正态曲线)

楼主可以在生成hist()的时候,调整一下ylim()和probability=TRUE,然后再用lines(density())去试试看 参考技术A hist(freq=F)即可 参考技术B 把数据和代码贴出来追问

如果有看不清的我贴过一张

直接copy超字数了只能贴图了

追答

通常情况下是你的lines 函数用错了。
lines需要x y 作为坐标
这样:
lines(x,y)
如果你希望添加正态分布曲线
x=seq(-5,5,0.01)
lines(x,dnorm(x))

----
你应该想添加 频数曲线吧。你得有频数数据。 density 返回的值是 统计值。
不是坐标值,不能用来画lines。

r语言中,画出了频率分布直方图,怎么在图上添加概率分布曲线?

可以用内置的graphic包来画,就是plot()和curve()

也可以用ggplot2来画,后者更灵活。

    graphic

# 先生成一组随机数
x <- rnorm(2000)
# 画频率直方图, 分30个bin
hist(x, freq = F, breaks = 30) 
# 再画概率分布曲线
lines(density(x, bw=.5), col="red", lwd=2)

2. ggplot2

# 准备工作, 把x设成一个数据集
library(ggplot2)
data <- data.frame(x = x)
# 生成底层和直方图,概率线的图层
p <- ggplot(data, aes(x = x, y = ..density..))
p <- p + geom_histogram(fill = "navy")
p <- p + geom_density(colour = "green")
p

画出来风格不太一样,看你口味了

参考技术A 可以用内置的graphic包来画,就是plot()和curve()
也可以用ggplot2来画,后者更灵活。
graphic

1
2
3
4
5
6

# 先生成一组随机数
x <- rnorm(2000)
# 画频率直方图, 分30个bin
hist(x, freq = F, breaks = 30)
# 再画概率分布曲线
lines(density(x, bw=.5), col="red", lwd=2)

2. ggplot2

1
2
3
4
5
6
7
8

# 准备工作, 把x设成一个数据集
library(ggplot2)
data <- data.frame(x = x)
# 生成底层和直方图,概率线的图层
p <- ggplot(data, aes(x = x, y = ..density..))
p <- p + geom_histogram(fill = "navy")
p <- p + geom_density(colour = "green")
p

画出来风格不太一样,看你口味了

以上是关于R语言中,如何在直方图中添加正态曲线的主要内容,如果未能解决你的问题,请参考以下文章

R语言自定义编写函数生成学生化残差的直方图(dist of studentized residuals),并叠加标准正太曲线核密度曲线轴须图rug曲线检验模型是否满足正态性(normality)

r语言如何将直方图x轴的组距

r语言如何将概率密度转换为正态分布曲线

R语言plotly可视化:plotly可视化多个数据集归一化直方图(historgram)并在直方图中添加密度曲线kde(核密度估计的密度曲线density plot)

R语言plotly可视化:plotly可视化归一化的直方图(historgram)并在直方图中添加密度曲线kde并在直方图的底部边缘使用geom_rug函数添加边缘轴须图

R语言plotly可视化:可视化多个数据集归一化直方图(historgram)并在直方图中添加密度曲线kde设置不同的直方图使用不同的分箱大小(bin size)在直方图的底部边缘添加边缘轴须图