長條圖通常用來呈現各種不同資料的數量。
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()