《R数据可视化手册》一3.2 绘制簇状条形图

简介:

本节书摘来自异步社区《R数据可视化手册》一书中的第3章,第3.2节,作者 【美】Winston Chang,更多章节内容可以访问云栖社区“异步社区”公众号查看

3.2 绘制簇状条形图

问题
如何绘制基于某个分类变量的簇状条形图?

方法
将分类变量映射到fill参数,并运行命令geom_bar(position="dodge")。

下面以cabbage_exp数据集为例演示一下绘图过程,cabbage_exp数据集包含两个分类变量Cultivar和Date及一个连续型变量Weight。

library(gcookbook) #为了使用数据
cabbage_exp

 Cultivar Date Weight
    c39 d16 3.18
    c39 d20 2.80
    c39 d21 2.74
    c52 d16 2.26
    c52 d20 3.11
    c52 d21 1.47

我们分别将Date和Cultivar映射给x和fill(见图3-4)。


7c2bf15be41aa748b0466063e22330ea225b7b56
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
  geom_bar(position="dodge",stat="identity")

讨论
最简单的条形图通常只对应一个绘制在x轴上的分类变量和一个绘制在y轴上的连续型变量。有时候,我们想额外添加一个分类变量跟x轴上的分类变量一起对数据进行分组。此时,可通过将该分类变量映射给fill参数来绘制簇状条形图,这里的fill参数用来指定条形的填充色。在这一过程中必须令参数position="dodge"以使得两组条形在水平方向上错开排列,否则,系统会输出堆积条形图(参见3.7节)。

与映射给条形图x轴的变量类似,映射给条形填充色参数的变量应该是分类变量而不是连续型变量。

我们可以通过将geom_bar()中的参数指定为colour="black"为条形添加黑色边框线;可以通过scale_fill_brewer()或者scale_fill_manual()函数对图形颜色进行设置。在图3-5中,我们使用RColorBrewer包中的Pastel1调色盘对图形进行调色。


8f4cf657e5bc71d02bdf04c613dcc7e09ae68433
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
  geom_bar(position="dodge", stat="identity", colour="black") +
  scale_fill_brewer(palette="Pastel1")

其他图形属性诸如颜色colour(指定条形图的边框线颜色)和线型(linestyle)也能用来对变量进行分组,不过,填充色(fill)也许是最合人心意的图形属性。

注意,如果分类变量各水平的组合中有缺失项,那么,绘图结果中的条形则相应地略去不绘,同时,临近的条形将自动扩充到相应位置。删去上例数据中的最后一行后,可得到图3-6。

ce <- cabbage_exp[1:5,] #复制删除了最后一行的数据集
ce

Cultivar Date Weight
    c39 d16 3.18
    c39 d20 2.80
    c39 d21 2.74
    c52 d16 2.26
    c52 d20 3.11
  
ggplot(ce, aes(x=Date, y=Weight, fill=Cultivar)) +
  geom_bar(position="dodge",stat="identity", colour="black") +
  scale_fill_brewer(palette="Pastel1")


783fcb5d2708f43fad4e7294c337a667b3796759

如果你的数据与上面类似,那么,你可以在分类变量组合缺失的那一项为变量y手动输入一个NA值。

另见
更多关于条形图着色的内容,可参见3.4节。

根据另一个变量值重排因子水平顺序的内容可参见15.9节。

相关文章
|
SQL 数据可视化 算法
数据可视化—绘制简单的折线图
在使用matplotlib绘制简单的折线图之前首先需要安装matplotlib,直接在pycharm终端pip install matplotlib即可
208 0
数据可视化—绘制简单的折线图