R中如何将数据的直方图和其密度曲线画在一张图上?

Python018

R中如何将数据的直方图和其密度曲线画在一张图上?,第1张

先设置好图层:par(mfrow=c(1,1),mai=c(0.5,0.6,0.5,0.5),cex=0.6,cex.main=1.0)#mfrow是规定图片的排列方式,比如你想将两个图并排就写c(1,2),意为一行两列,后面的参数都可以调整图像显示的位置、大小等。

然后画直方图:hist(Fresh,prob=TRUE,xlab = "Fresh",ylab = "Probability")#prob是指它的数轴是发生概率,只有这个选项为TRUE它跟概率密度曲线的纵轴才一致,不然概率密度曲线纵坐标太小就会画成一道直线。

最后画概率密度曲线:lines(density(Fresh),col="red")

同时运行上面三条语句,即可得如下图画在一张图上的直方图和其密度曲线:

可以用内置的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

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