《R数据可视化手册》——3.1 绘制简单条形图

简介:

本节书摘来异步社区《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)。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/6a93cf3d614ea4ae6208603da1471bd212fb8e03.png" width="" height="">
</div>

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调色盘对图形进行调色。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/710bac6e9339a90548c65845849b815d030f8f91.png" width="" height="">
</div>

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")


<div style="text-align: center"><img src="https://yqfile.alicdn.com/761068f8ba57d35780ff58eb82b2f8baddf890ee.png" width="" height="">
</div>

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

另见
更多关于条形图着色的内容,可参见3.4节。
相关文章
|
SQL 数据可视化 算法
数据可视化—绘制简单的折线图
在使用matplotlib绘制简单的折线图之前首先需要安装matplotlib,直接在pycharm终端pip install matplotlib即可
259 0
数据可视化—绘制简单的折线图