barplot 函數用於繪制柱狀圖,下面對其常用的參數進行一個詳細的解釋:
1)height : 高度,通過這個參數可以指定要畫多少個柱子以及每個柱子的高度,其值有兩種格式,
第一種 :向量 vector, 此時會根據向量的長度確定圖中有多少個柱子,向量中的每個值就是柱子的高度
代碼示例:
barplot(height = 1:10)
效果圖如下:

從圖中可以看出,共有10個柱子,柱子的高度為1到10,和height 參數的向量保持一致;
第二種:矩陣,matrix, 此時用於畫堆積柱狀圖
代碼示例:
data <- cbind(a = 1:4, b = 1:4) barplot(data)
效果圖如下:

從圖中可以看出,輸入的矩陣data一共有a和b兩列,所以圖中只有兩個柱子,矩陣有4行,所以在每個柱子又由4個小的柱子堆積起來,所以矩陣常用來繪制堆積柱狀圖
需要注意的是,當輸入參數為矩陣時,默認是堆積柱狀圖,這種默認行為其實是通過 beside 參數進行控制,beside 默認值為 FALSE, 當為TRUE 時,我們看下效果:
代碼示例:
data <- cbind(a = 1:4, b = 1:4) barplot(data, beside = T)
效果圖如下:

從圖中可以看到,當設置besdie = TRUE 時,原本堆積在一起的柱子現在變成並列的了;
2)width: 寬度,控制每個柱子的寬度,默認值為1,值得注意的是,這個參數的值是可以循環使用的,當我們只設置一個值時,會自動循環,生成長度和柱子數目相同的向量,效果就是所有柱子的寬度是一樣的,其實也可以指定多個值,使每個柱子的長度不一樣
代碼示例:
barplot(1:5, width = 5:1)
效果圖如下:

3)space:間隔,指定每個柱子左邊的空白區域的寬度,這個值為一個百分比,默認值為0.2, 實際的間隔 = 0.2 * 1(所有柱子的平均寬度) = 0.2; 這個參數的值和width 參數類似,可以只設置一個值,也可以指定不同的柱子間隔不同;
代碼示例:
barplot(1:3, space = c(0.1, 0.2, 0.3))
效果圖如下:

4)names.arg : 每個柱子下面的標記,當height 為 vector 時,默認的標記為向量的names 屬性, 當height 為 matrix 是,默認為 matrix 的colnames 屬性
代碼示例:
par(mfrow = c(1, 2))
height <- c(1:3)
names(height) <- c("A", "B", "C")
barplot(height)
data <- cbind("A" = 1:4, "B" = 1:4)
barplot(data)
效果圖如下:

上面的默認用法,names.arg 參數的主要用途是當輸入的height 缺少對應的屬性時,自己手工賦值,或者對已有的屬性不滿意,重新賦值
代碼示例:
par(mfrow = c(1, 2))
height <- c(1:3)
names(height) <- c("A", "B", "C")
barplot(height, names.arg = c("A1", "A2", "A3"))
data <- cbind("A" = 1:4, "B" = 1:4)
barplot(data, names.arg = c("D", "E"))
效果圖如下:

5) legned.text : 圖例的文字說明, 只有當height參數的值是matrix 時,才起作用,默認顯示的是matrix的rownames 屬性,其值有兩種指定形式,
第一種:邏輯值,是否需要顯示圖例,默認為FALSE
代碼示例:
data <- cbind(a = 1:4, b = 1:4)
rownames(data) <- c("A", "B", "C", "D")
barplot(data, legend.text = TRUE)
效果圖如下:

第二種, 指定圖例中的文字內容,相當於修改了matrix的 rownames 屬性
代碼示例:
data <- cbind(a = 1:4, b = 1:4)
rownames(data) <- c("A", "B", "C", "D")
barplot(data, legend.text = c("E", "F", "G", "H"))
效果圖如下:

從上面兩張圖可以看出來,雖然可以通過這種方式顯示圖例,但是圖里的位置都是固定在了右上角,會出現和柱子重疊的情況,最佳的顯示辦法還是單獨調用legend 函數,添加圖例;
6)beside: 之前提到過的,控制group bar的排列方式, 默認FALSE, 堆積排列,TRUE 代表水平排列
代碼示例:
par(mfrow = c(1, 2)) data <- cbind(a = 1:4, b = 1:4) barplot(data, main = "beside = F") barplot(data, beside = T, main = "beside = T")
效果圖如下:

7) horiz : 邏輯值,默認FALSE , 當值為TRUE 時,將x軸和y軸轉置;
代碼示例:
par(mfrow = c(1, 2)) barplot(1:4, main = "horiz = F") barplot(1:4, main = "horiz = T", horiz =T)
效果圖如下:

8)col : 柱子的填充色,默認為灰色
代碼示例:
barplot(1:4, col = "green")
效果圖如下:

除了設置col參數的值為一個外,還支持不同的柱子設置不同的顏色
代碼示例:
barplot(1:4, col = rainbow(4))
效果圖如下:

9) border : 柱子邊框的顏色, 默認為 black, 當border = NA時,表示沒有邊框
代碼示例:
barplot(1:4, col = rainbow(4), border = NA, main = "border = NA")
效果圖如下:

10)density 和 angle : 設置柱子用線條填充,density 控制線條的密度, angel 控制線條的角度
代碼示例:density 控制線條的密度
par(mfrow = c(1, 3)) barplot(rep(1,4), density = 1, main = "density = 1") barplot(rep(1,4), density = 2, main = "density = 2") barplot(rep(1,4), density = 3, main = "density = 3")
效果圖如下:

代碼示例:angle 控制線條的角度, 必須和density 參數搭配使用才能發揮作用
par(mfrow = c(1, 3)) barplot(rep(1,4), density = 2, angle = 45, main = "angle = 45") barplot(rep(1,4), density = 2, angle = 90, main = "angle = 90") barplot(rep(1,4), density = 2, angle = 180, main = "angle = 180")
效果圖如下:

11)axes :邏輯值,控制是否顯示軸線
代碼示例:
par(mfrow = c(1, 2)) data <- cbind(a = 1:4, b = 1:4) barplot(data, axes = F, main = "axes = F") barplot(data, axes = T, main = "axes = T")
效果圖如下:

12)axisnames : 控制是否顯示柱子的標簽
代碼示例:
par(mfrow = c(1, 2)) data <- cbind(a = 1:4, b = 1:4) barplot(data, axisnames = F, main = "axisnames = F") barplot(data, axisnames = T, main = "axisnames = T")
效果圖如下:

13)offset : 設置柱子的起始位置在y軸上的位置, 默認值為0
代碼示例:
par(mfrow = c(1, 3)) data <- cbind(a = 1:4, b = 1:4) barplot(data, offset = 0, main = "offset = 0") barplot(data, offset = 1, main = "offset = 1") barplot(data, offset = 2, main = "offset = 2")
效果圖如下:

