![bf03cdf2d4f693a6c696283bc124e5be.png](https://i-blog.csdnimg.cn/blog_migrate/9dfef936e26023c7efce3f76902fbad1.jpeg)
直方图绘制hist()
素娥
2020/9/27
本文我们要用iris数据集进行直方图的绘制
本文主要使用hist、plot函数进行绘制图片
首先还是观察数据类型
data<-iris
library(knitr)
tt<-head(data,15)
kable(tt)
Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species |
5.1 | 3.5 | 1.4 | 0.2 | setosa |
4.9 | 3.0 | 1.4 | 0.2 | setosa |
4.7 | 3.2 | 1.3 | 0.2 | setosa |
4.6 | 3.1 | 1.5 | 0.2 | setosa |
5.0 | 3.6 | 1.4 | 0.2 | setosa |
5.4 | 3.9 | 1.7 | 0.4 | setosa |
4.6 | 3.4 | 1.4 | 0.3 | setosa |
5.0 | 3.4 | 1.5 | 0.2 | setosa |
4.4 | 2.9 | 1.4 | 0.2 | setosa |
4.9 | 3.1 | 1.5 | 0.1 | setosa |
5.4 | 3.7 | 1.5 | 0.2 | setosa |
4.8 | 3.4 | 1.6 | 0.2 | setosa |
4.8 | 3.0 | 1.4 | 0.1 | setosa |
4.3 | 3.0 | 1.1 | 0.1 | setosa |
5.8 | 4.0 | 1.2 | 0.2 | setosa |
简单的直方图
相关参数
1.x:要画图的数据
2.breaks:数据分多少组
3.freq:若为T(默认)则绘制频数分布直方图,为F则绘制频率分布直方图
4.probability:与freq相反
我们绘制iris的叶片宽度的直方图
绘制分12组的频数分布直方图
hist(x=data$Sepal.Width,breaks = 12)
![098e1c3c718b2b251ab28945e00f8aa1.png](https://i-blog.csdnimg.cn/blog_migrate/42a9e0411dc32954c229f929d259dd6a.png)
绘制分12组的频率分布直方图
x<-hist(x=data$Sepal.Width,breaks = 12,freq = F)
![82f5b1f2445186869faaf00abbdd51f6.png](https://i-blog.csdnimg.cn/blog_migrate/203c4cd2dc3b76af6e733a71ca377c70.png)
注意,此处的纵坐标是频率/组距
再叠加一条密度曲线。
hist(x=data$Sepal.Width,breaks = 12,freq = F)
lines(density(data$Sepal.Width))
![fe11e73097514b74e9fda43e92f34863.png](https://i-blog.csdnimg.cn/blog_migrate/c2edc4fb9acb9b75dd4e2d8cf458ecda.png)
#美化图像(图形颜色,打斜线等)
###相关参数
1.density :阴影线密度
2.angle:阴影线倾角
3.col:填充颜色
4.border:直方图边缘颜色
在第一幅图的基础上进行美化
先加斜线
hist(x=data$Sepal.Width,breaks = 12,density = 10,angle = 45)
![a2df3659097abb7167430929b967e338.png](https://i-blog.csdnimg.cn/blog_migrate/ec232ddc5fd6db3fcec714bb94a1b1fa.png)
在加上颜色和边框
hist(x=data$Sepal.Width,breaks = 12,density = 10,angle = 45,col = "red",
border = "blue")
![bdcc3a976abbc39f10794cd955f572b9.png](https://i-blog.csdnimg.cn/blog_migrate/e8b9b822f093e4de48a5af1ed93e4d48.png)
不加斜线,直接写颜色
hist(x=data$Sepal.Width,breaks = 12,col = "red",
border = "blue")
![cfb1514b9ee6bc6ff3e7d7d397da438e.png](https://i-blog.csdnimg.cn/blog_migrate/d505356e38844e3192e8133443c92ac3.png)
美化图像(坐标轴,标题,标签)
相关参数
1.main, xlab, ylab :标题,x名称,y名称
2.xlim, ylim :x轴,y轴范围
3.axes:逻辑值,是否画坐标轴
4.labels:是否添加标签
先加上标题,x名称,y名称
hist(x=data$Sepal.Width,breaks = 12,main="直方图",xlab="叶片宽度",
ylab="频数")
![d99d7131f880ca6f651b437b529ea4ba.png](https://i-blog.csdnimg.cn/blog_migrate/ec1695e8e7073edc9834a61c2eb531ad.png)
设置x,y轴的范围
hist(x=data$Sepal.Width,breaks = 12,main="直方图",xlab="叶片宽度",
ylab="频数",xlim=c(2,4.5),ylim=c(0,40))
![f1015df5ae8b938453e87f80e51b3f7b.png](https://i-blog.csdnimg.cn/blog_migrate/0d4e5c959fc9fc6c7671864e513d9559.png)
加上数据标签
hist(x=data$Sepal.Width,breaks = 12,main="直方图",xlab="叶片宽度",
ylab="频数",xlim=c(2,4.5),ylim=c(0,40),labels=T)
![e50306e5daf071bf89310363018594f4.png](https://i-blog.csdnimg.cn/blog_migrate/1a73636ab5ab314bd2191f45fad2ac19.png)
去掉坐标轴
hist(x=data$Sepal.Width,breaks = 12,main="直方图",axes=F,labels=T)
![e17baa649aeac5ca1315f29028362866.png](https://i-blog.csdnimg.cn/blog_migrate/b452b659fb2ae1046e96a039a63ecd70.png)
参数plot
是否画出图像
hh<-hist(x=data$Sepal.Width,breaks = 12,plot=F)
hh
## $breaks
## [1] 2.0 2.2 2.4 2.6 2.8 3.0 3.2 3.4 3.6 3.8 4.0 4.2 4.4
##
## $counts
## [1] 4 7 13 23 36 24 18 10 9 3 2 1
##
## $density
## [1] 0.13333333 0.23333333 0.43333333 0.76666667 1.20000000 0.80000000
## [7] 0.60000000 0.33333333 0.30000000 0.10000000 0.06666667 0.03333333
##
## $mids
## [1] 2.1 2.3 2.5 2.7 2.9 3.1 3.3 3.5 3.7 3.9 4.1 4.3
##
## $xname
## [1] "data$Sepal.Width"
##
## $equidist
## [1] TRUE
##
## attr(,"class")
## [1] "histogram"
hh展示的是直方图的相关值
间隔,频数,频率/组距,组中值等
接着用plot函数就可以继续绘制
hh<-hist(x=data$Sepal.Width,breaks = 12,plot=F)
plot(hh,col=rgb(0.7,0.2,0.2,alpha=0.5),border = "white",
main="直方图",xlab="叶片宽度",
ylab="频数",xlim=c(2,4.5),ylim=c(0,40),labels=T,
)
![5a7886944772844613f14d2fc391fde6.png](https://i-blog.csdnimg.cn/blog_migrate/d27ad96581b4dd203274017809768517.png)
再往上加一条密度图
plot(hh,
freq=F,col=rgb(0.7,0.2,0.2,alpha=0.5),border = "white",
main="直方图",xlab="叶片宽度",
ylab="频数",xlim=c(2,4.5),ylim=c(0,1.5),labels=T,
)
lines(density(data$Sepal.Width),lwd=2,col=rgb(0.1,0.5,0.2))
![125cfee715fe26e32d49c067fe887753.png](https://i-blog.csdnimg.cn/blog_migrate/9b0aeed516430a9973b81eadd49abe5d.png)