条形图通常用来展示不同的分类下某个数值变量的取值。
绘制条形图需要特别注意一个重要细节:有时条形图的条形高度表示的是数据集中变量的频数,有时则表示变量取值本身。牢记这个区别,因为它太容易让人混淆啦,两者与数据集的对应关系不同,但又对应同样的术语。
绘制简单条形图
使用ggplot()
函数和geom_bar(stat="identity")
绘制条形图(y轴对应的是变量取值本身)。
当x
是连续变量时,ggplot
不是只在实际取值处绘制条形,而将在x轴上介于最大值和最小值之间的所有可能的取值处绘制条形。如果碰到这种情况,我们需要先将其转换为因子变量。
默认情况条形图的填充色为黑灰色且条形图没有边框线,我们可以使用fill
与colour
参数来设置改变它们。
注意这里参数colour
为英式的,我们也可以用美式拼法color
,它们在底层指向相同的映射,所以效果一致。
绘制簇状条形图
将分类变量映射到fill
参数,并运行命令geom_bar(position="dodge")
。
下面以cabbage_exp
数据集为例演示一下绘图过程。
分布将Date
与Cultivar
映射给x
和fill
。
有时候我们想额外添加一个分类变量跟x轴上的分类变量一起对数据进行分组,此时,可通过将该分类变量映射给fill
参数来绘制簇状条形图。
下面对上图作一些修改。
我们通过将geom_bar()
中的参数指定为color="black"
为条形图添加黑色边框线;用scale_fill_brewer()
或scale_fill_manual()
函数对图形的颜色进行设置。上图我们使用了RColorBrewer
包中的Pastel1
调色板对图形进行调色。
绘制频数条形图
将数据集中的每行数据对应于一个样本,针对样本的频数绘制条形图。
diamonds
数据集共有50,000+行数据,每行数据对应一颗钻石的品质信息。