長條圖通常用來呈現各種不同資料的數量。
base 系統在 base 系統中可以使用 barplot 來繪製長條圖,其第一個傳入的參數是一個向量,指定每一條 bar 的長度,如果該向量是一個具名向量,則每一個元素的名稱就會被用來當作每個 bar 的名稱:
gear.table <- table(mtcars$gear) gear.table
3 4 5 15 12 5
barplot(gear.table)
若要改變每個 bar 的名稱,可以使用 names.arg 參數來指定:
barplot(gear.table, names.arg = c("Three", "Four", "Five"))
有時候在資料比較多或是每個 bar 的名稱比較長的時候,將長條圖以水平的方式來畫會比較適合,barplot 本身有一個 horiz 參數可以調整繪圖方向,不過他只會更改圖形的方向,文字的方向需要另外使用 par 配合 las 來修改:
par(las = 1, mar = c(3, 5, 1, 1)) barplot(gear.table, names.arg = c("Three", "Four", "Five"), horiz = TRUE)
這裡的 las 設定為 1 則代表座標軸上名稱以水平方式顯示,而 mar 則是用來調整圖形的下方、左方、上方與右方的邊界大小,關於這些參數的詳細說明,請參考 par 的線上手冊。
二維的列連表也可以直接使用 barplot 畫出兩種資料合併的長條圖:
gear.table2 <- table(mtcars$vs, mtcars$gear) gear.table2
3 4 5 0 12 2 4 1 3 10 1
barplot(gear.table2)
將兩種資料拆開來畫成兩個並列的長條圖:
barplot(gear.table2, beside = TRUE)
lattice 系統在 lattice 系統中可以用 barchart 來繪製長條圖:
barchart(gear.table)
names(gear.table) <- c("Three", "Four", "Five") barchart(gear.table)
以二維的列連表繪製長條圖:
barchart(gear.table2)
barchart 預設的資料方向跟 barplot 不同,我們可以使用 t 將資料轉向:
barchart(t(gear.table2))
將兩種資料拆開來畫成兩個並列的長條圖:
barchart(t(gear.table2), stack = FALSE)
ggplot2 系統在 ggplot2 系統中可以使用 geom_bar 來繪製長條圖:
ggplot(mtcars, aes(factor(gear))) + geom_bar()
繪製水平的長條圖:
ggplot(mtcars, aes(factor(gear))) + geom_bar() + coord_flip()
使用 aes 的 fill 參數可以讓不同的資料以不同的顏色表示:
ggplot(mtcars, aes(factor(gear), fill = factor(vs))) + geom_bar() + coord_flip()
將 geom_bar 的 position 參數設定為 dodge 可以讓長條圖並列顯示:
ggplot(mtcars, aes(factor(gear), fill = factor(vs))) + geom_bar(position="dodge") + coord_flip()