本节书摘来异步社区《R数据可视化手册》一书中的第3章,第3.3节,作者:【美】Winston Chang,更多章节内容可以访问云栖社区“异步社区”公众号查看。
3.3 绘制频数条形图
问题
如果数据集中每行数据对应于一个样本,如何针对样本频数绘制条形图?
方法
使用geom_bar()函数,同时不要映射任何变量到y参数(见图3-7)。
ggplot(diamonds, aes(x=cut)) + geom_bar()
# 等价于使用geom_bar(stat="bin")
讨论
diamonds数据集共有53 940行数据,每行数据对应于一颗钻石的品质信息:
diamonds
carat cut color clarity depth table price x y z
1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
...
53539 0.86 Premium H SI2 61.0 58 2757 6.15 6.12 3.74
53540 0.75 Ideal D SI2 62.2 55 2757 5.83 5.87 3.64
geom_bar()函数在默认情况下将参数设定为stat="bin",该操作会自动计算每组(根据x轴上面的变量进行分组)变量对应的观测数。从图中可以看到,切工精美的钻石大概有23 000颗。
本例中,x轴对应的是离散型变量。当x轴对应于连续型变量时,我们会得到一张直方图,如图3-8所示。
ggplot(diamonds, aes(x=carat)) + geom_bar()```
<div style="text-align: center"><img src="https://yqfile.alicdn.com/1be6527f8297373314aa4e1cefed7806da5950db.png" width="" height="">
</div>
在这个例子中,使用geom_bar()和geom_histogram()具有相同的效果。
另见
如果不想让ggplot()函数自动计算每组数据的行数绘制频数条形图,而是想通过数据框中的某列来指定y参数的话,可以参见3.1节的内容。
当然,也可以通过先计算出每组数据的行数,再将计算结果传递给ggplot()函数来绘制上图。更多关于数据描述的内容,可参见15.17节。