R语言入门之直方图与密度曲线

2020-08-06 09:42:32 浏览数 (1)

直方图

在绘制直方图时,大家可以使用hist(x)这个函数,其中x就是需要进行可视化的数据,当然这个函数还有一个参数就是freq,其默认设置是freq=NULL。当freq=FALSE时,其纵坐标是以概率的形式呈现,而freq=TRUE时则是频率作为纵坐标。另外参数breaks可以用来控制直方条之间的间隔,例如breaks=5就表示绘制出5个直方条。当然除此之外,hist()函数还有其它参数,大家可以使用?hist()来了解不同参数的作用及其使用方法。

代码语言:javascript复制
# 先画一个简单的直方图
hist(mtcars$mpg) ##这次我们使用的还是mtcars这个数据集
代码语言:javascript复制
hist(mtcars$mpg, freq=F, breaks=3) ##在R语言中,FALSE可以用F代替,这样比较简洁
##在这里我们以频率/组距来作为纵坐标,并且只绘制3个直方条出来
代码语言:javascript复制
#接下来我们给直方图加上颜色
hist(mtcars$mpg, breaks=12, col="red") ##这里使用col参数可以控制绘图颜色
#如下图所示,所有的12个直方条(其中一个没有数据)被填充成红色了
代码语言:javascript复制
#接下来为直方图加上正态分布曲线
x <- mtcars$mpg ##将mtcars的变量mpg赋值给变量x
h<-hist(x, breaks=10, col="red", xlab="Miles Per Gallon", main="Histogram with Normal Curve") ##xlab参数用来设置X轴标签,main参数用来设置图片的主标题
xfit<-seq(min(x),max(x),length=40) ##生成从X的最小值到最大值的等间距的40个数
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x)) ##使用dnorm()函数生成服从正态分布的概率密度函数值
yfit <- yfit*diff(h$mids[1:2])*length(x) ##在这里diff()函数是计算两数之差,也即直方图的组距;这一行是计算出模拟的Y值,为后续绘图做准备。
lines(xfit, yfit, col="blue", lwd=2) ##绘制密度图形,lwd指的是线宽。
代码语言:javascript复制
# Kernel 密度图
d <- density(mtcars$mpg) # density()函数获取概率密度数据
plot(d) # 绘制结果

从上图我们可以看出这组数据不符合正态分布,因为图中很明显地出现了双峰。

今天就和大家分享到这里,后续会和大家讲解其它绘图方法,有兴趣的朋友可以了解数值模拟方法,这在后续的学习中会非常有用。

0 人点赞