直方圖簡介
直方圖(Histogram),又稱質量分布圖,是一種統(tǒng)計報告圖,由一系列高度不等的縱向條紋或線段組成,表示數據分布的情況。 一般用橫軸(X軸)表示數據類型,縱軸(Y軸)表示分布(相應值的頻數)情況。
繪制直方圖,首先要對數據進行分組,然后統(tǒng)計每個分組內數據元的數量。 在平面直角坐標系中,橫軸標出每個組的端點,縱軸表示頻數,每個矩形的高代表對應的頻數,稱這樣的統(tǒng)計圖為頻數分布直方圖。一般要了解以下幾個名詞的概念:
組數:統(tǒng)計數據時,把數據按照不同的范圍分成幾個組,分成組的個數稱為組數;
組距:每一組兩個端點的差;
頻數:分組內的數據元的數量除以組距;
直方圖的作用
1、顯示各組頻數或者數量分布情況;
2、顯示各組間頻數或數量的差異;

直方圖構成
R繪制直方圖
可以利用hist()函數進行繪制:
hist(x, ...)
## Default S3 method:
hist(x, # x是由數據值組成的數值向量
breaks = "Sturges", #多種格式,指定組數
freq = NULL, #邏輯值, 默認值為TRUE , y軸顯示的是每個區(qū)間內的頻數,FALSE, 代表顯示的是頻率(= 頻數/ 總數)
probability = !freq, #邏輯值,和 freq 參數的作用正好相反,TRUE 代表頻率, FALSE 代表頻數
right = TRUE, #左右顯示
density = NULL, #用線條填充柱子
angle = 45, #用線條填充柱子,控制線條的角度,必須和density 參數配合使用,才能發(fā)揮作用
col = "lightgray", #柱子的填充色
border = NULL, #柱子的邊框的顏色,默認為black, 當border = NA 時, 代表沒有邊框
main = paste("Histogram of" , xname), #標題
xlim = range(breaks), #x軸范圍
ylim = NULL, #y軸范圍
xlab = xname, x軸名稱
ylab = yname, #y軸名稱
axes = TRUE, #邏輯值,是否顯示軸線
plot = TRUE, #有待研究
labels = FALSE, #顯示在每個柱子上方的標簽
nclass = NULL, #有待研究
warn.unused = TRUE, ...)
案例
par(mfrow = c(3,2)
#簡單直方圖
hist(mtcars$mpg)
#增加breaks參數
hist(mtcars$mpg,
breaks = 15,
)
#增加col參數
hist(mtcars$mpg,
breaks = 15,
col = "red",
)
#增加x和y軸標題
hist(mtcars$mpg,
breaks = 15,
col = "red",
xlab = "x軸標題",
ylab = "y軸標題",
)
#增加圖標題
hist(mtcars$mpg,
breaks = 15,
col = "red",
xlab = "x軸標題",
ylab = "y軸標題",
main = "圖片標題")
#增加border參數
hist(mtcars$mpg,
breaks = 15,
col = "red",
xlab = "x軸標題",
ylab = "y軸標題",
main = "圖片標題",
border = "green")

#添加密度線
hist(mtcars$mpg,
breaks = 12,
col = "red",
xlab = "x軸標題",
ylab = "y軸標題",
main = "圖片標題",
border = "green",
freq = FALSE)
lines(density(mtcars$mpg),
col = "black",
lwd = 5)

#添加填充類型為線條,線條的角度為45度
hist(mtcars$mpg,
breaks = 12,
col = "red",
xlab = "x軸標題",
ylab = "y軸標題",
main = "圖片標題",
border = "black",
freq = FALSE,
density = 12,
angle = 45,
)
lines(density(mtcars$mpg),
col = "black",
lwd = 5)

#添加填充類型為線條,線條的角度為45度
hist(mtcars$mpg,
breaks = 12,
col = "red",
xlab = "x軸標題",
ylab = "y軸標題",
main = "圖片標題",
border = "black",
freq = FALSE,
density = 12,
angle = 45,
)
#添加密度線
lines(density(mtcars$mpg),
col = "black",
lwd = 3)
#添加外框線
box()

#添加每個柱子上的標簽
hist(mtcars$mpg,
breaks = 12,
col = "red",
xlab = "x軸標題",
ylab = "y軸標題",
main = "圖片標題",
border = "black",
freq = FALSE,
density = 12,
angle = 45,
labels = T
)
#添加密度線
lines(density(mtcars$mpg),
col = "black",
lwd = 3)
#添加外框線
box()

參考文獻
[1] Robert I. Kabacoff (著). R語言實戰(zhàn)(高濤/肖楠/陳鋼 譯). 北京: 人民郵電出版社.
[2] https://www.cnblogs.com/xudongliang/p/6913363.html
[3] https://zhuanlan.zhihu.com/p/259835459