创建柱状图
在前面的小节中,我们已经学会了如何创建散点图和折线图。此外,还有其他几种类
型的图形比较有用,在这里值得一提。柱状图是其中最常用的一种。柱状图中柱子的高度
可以用于对比不同类别的数量。
我们创建一个最简单的柱状图,如图7-20所示。这里,使用barplot( )而不是plot( ):
barplot(1:10, names.arg = LETTERS[1:10])
图 7-20
如果数值向量被命名了,该向量名就会自动成为 x 轴的名字。因此,以下代码将会生
成与图 7-20 相同的柱状图:
ints <- 1:10
names(ints) <- LETTERS[1:10]
barplot(ints)
柱状图的制作看起来很简单的。现在基于航班数据集 nycflights13,我们可以创建
记录中航班数最多的前 8 个航空公司的柱状图:
data("flights", package = "nycflights13")
carriers <- table(flights$carrier)
carriers
##
## 9E AA AS B6 DL EV F9 FL HA MQ
## 18460 32729 714 54635 48110 54173 685 3260 342 26397
## OO UA US VX WN YV
## 32 58665 20536 5162 12275 601
上述代码中,table( )用于计算记录中每个航空公司的航班数量。
sorted_carriers <- sort(carriers, decreasing = TRUE)
sorted_carriers
##
## UA B6 EV DL AA MQ US 9E WN VX
## 58665 54635 54173 48110 32729 26397 20536 18460 12275 5162
## FL AS F9 YV HA OO
## 3260 714 685 601 342 32
如以上代码所示,将航空公司按其航班数降序排列。我们可以取出表格中前 8 个元素,
并绘制柱状图,如图 7-21 所示。
barplot(head(sorted_carriers, 8),
ylim = c(0, max(sorted_carriers) * 1.1),
xlab = "Carrier", ylab = "Flights",
main = "Top 8 carriers with the most flights in record")
图 7-21