本节书摘来自异步社区《r数据可视化手册》一书中的第3章,第3.2节,作者 【美】winston chang,更多章节内容可以访问云栖社区“异步社区”公众号查看
问题
如何绘制基于某个分类变量的簇状条形图?
方法
将分类变量映射到fill参数,并运行命令geom_bar(position="dodge")。
下面以cabbage_exp数据集为例演示一下绘图过程,cabbage_exp数据集包含两个分类变量cultivar和date及一个连续型变量weight。
我们分别将date和cultivar映射给x和fill(见图3-4)。
讨论
最简单的条形图通常只对应一个绘制在x轴上的分类变量和一个绘制在y轴上的连续型变量。有时候,我们想额外添加一个分类变量跟x轴上的分类变量一起对数据进行分组。此时,可通过将该分类变量映射给fill参数来绘制簇状条形图,这里的fill参数用来指定条形的填充色。在这一过程中必须令参数position="dodge"以使得两组条形在水平方向上错开排列,否则,系统会输出堆积条形图(参见3.7节)。
与映射给条形图x轴的变量类似,映射给条形填充色参数的变量应该是分类变量而不是连续型变量。
我们可以通过将geom_bar()中的参数指定为colour="black"为条形添加黑色边框线;可以通过scale_fill_brewer()或者scale_fill_manual()函数对图形颜色进行设置。在图3-5中,我们使用rcolorbrewer包中的pastel1调色盘对图形进行调色。
其他图形属性诸如颜色colour(指定条形图的边框线颜色)和线型(linestyle)也能用来对变量进行分组,不过,填充色(fill)也许是最合人心意的图形属性。
注意,如果分类变量各水平的组合中有缺失项,那么,绘图结果中的条形则相应地略去不绘,同时,临近的条形将自动扩充到相应位置。删去上例数据中的最后一行后,可得到图3-6。
如果你的数据与上面类似,那么,你可以在分类变量组合缺失的那一项为变量y手动输入一个na值。
另见
更多关于条形图着色的内容,可参见3.4节。
根据另一个变量值重排因子水平顺序的内容可参见15.9节。