每个人都用得到的频数分布直方图

时间:2022-07-23
本文章向大家介绍每个人都用得到的频数分布直方图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

频数分布直方图能清楚地显示各组频数分布情况,同时直观展示各组之间频数的差别,是数据分析过程中常用的一种图。

画频数分布直方图的方法有很多,可以用SPSS、Excel等等,但这些工具操作起来比较繁琐,在这里小编教大家用R语言快速绘制频数分布直方图。

首先我们需要准备绘制频数分布直方图的数据,第一列为样本名称(可省略),第二列为表型数据。

## 导入数据
trait <- read.table("trait.txt",header=T,sep="t",row.names=1)
## 选择表型数据
x <- trait$A
## 绘制频数分布直方图
h <- hist(x,col="#6289c3",freq=TRUE,lwd=2,cex.axis=1.5,cex.lab=1.5,main="",ylab="",xlab="",cex.main=1.5)

频数分布直方图

## 绘制频率分布直方图(与频数分布直方图代码的区别为freq=FALSE)
h <- hist(x,col="#6289c3",freq=FALSE,lwd=2,cex.axis=1.5,cex.lab=1.5,main="",ylab="",xlab="",cex.main=1.5)

频率分布直方图

## 绘制轴须图
rug(jitter(x),side=1,col="#c7513b",lwd=1)

红色部分就是绘制出来的轴须图(rug plot),轴须图是数据的一维展示方式,可以清楚地让我们看到实际数据分布在哪里。

## 绘制正态曲线
xfit <- seq(min(x),max(x),length=40)
meannum <- mean(x,na.rm=TRUE)
sdnum <- sd(x,na.rm=TRUE)
yfit <- dnorm(xfit,mean = meannum,sd=sdnum)
yfit <- yfit*diff(h$mids[1:2]*length(x))
lines(xfit,yfit,col="black",lwd=2)

至此,我们的图就画好了!图中很多细节还可以使用下面代码微调。

## xlim设置X轴范围,ylim设置Y轴范围
hist(x,col="#6289c3",freq=TRUE,xlim=c(10,35),ylim=c(0,15),lwd=2,cex.axis=1.5,cex.lab=1.5,main="",ylab="",xlab="",cex.main=1.5)
## breaks设置组数
hist(x,col="#6289c3",freq=TRUE,breaks=10,xlim=c(10,35),lwd=2,cex.axis=1.5,cex.lab=1.5,main="",ylab="",xlab="",cex.main=1.5)
## 添加外框
box(lwd=2)

参考资料:

R语言实战(第2版)118-119页

https://blog.csdn.net/ilovemoon10/article/details/7780391