博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《R数据可视化手册》一3.7 绘制堆积条形图
阅读量:6170 次
发布时间:2019-06-21

本文共 1467 字,大约阅读时间需要 4 分钟。

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

3.7 绘制堆积条形图

问题

如何绘制堆积条形图?

方法

使用geom_bar()函数,并映射一个变量给填充色参数(fill)即可。该命令会将Date对应到x轴上,并以Cultivar作为填充色,如图3-16所示。

library(gcookbook) # 为了使用数据ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +  geom_bar(stat="identity")

8cb258fce88adb6cbbb0ff2c5e4a732c0c9c9038

讨论

弄清楚图形对应的数据结构有助于理解图形的绘制过程。上例数据集中Date变量对应于三个水平、Cultivar变量对应于两个水平,两个变量不同水平的组合又分别与一个Weight变量相对应:

cabbage_exp Cultivar Date Weight    sd n     se  c39  d16  3.18 0.9566144 10 0.30250803  c39  d20  2.80 0.2788867 10 0.08819171  c39  d21  2.74 0.9834181 10 0.31098410  c52  d16  2.26 0.4452215 10 0.14079141

默认绘制的条形图有一个问题,即条形的堆积顺序与图例顺序是相反的。我们可以通过guides()函数对图例顺序进行调整,并指定图例所对应的需要调整的图形属性,本例中对应的是填充色(fill),如图3-17所示。

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +  geom_bar(stat="identity") +  guides(fill=guide_legend(reverse=TRUE))

2d19fcca5a9bb1662a506e2af8ecf8d90ca78e6d

如果你想调整条形的堆叠顺序,可以通过指定图形映射中的参数order=desc()来实现:

library(plyr) # 为了使用desc()函数ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar, order=desc(Cultivar))) +  geom_bar(stat="identity")

5682d46eac8e08b03ce51b35c2ecb571669aa44f

当然,也可以通过调整数据框中对应列的因子顺序来实现上述操作(参见15.8节),但需谨慎进行该操作,因为对数据进行修改可能导致其他分析结果也发生改变。

为了获得效果更好的条形图,我们保持逆序的图例顺序不变,同时,使用scale_fill_brewer()函数得到一个新的调色板,最后设定colour="black"为条形添加一个黑色边框线(如图3-19所示)。

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +  geom_bar(stat="identity", colour="black") +   guides(fill=guide_legend(reverse=TRUE)) +   scale_fill_brewer(palette="Pastel1")

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

将因子根据另一个变量重新排列水平顺序的内容可参见15.9节。手动更改因子水平顺序的内容,可参见15.8节。

转载地址:http://hrnba.baihongyu.com/

你可能感兴趣的文章
[译]如何打造以人为本的移动游戏
查看>>
从字节码层面,解析 Java 布尔型的实现原理
查看>>
HTML5调用手机摄像机、相册功能
查看>>
vue单页面应用在iOS版微信下自定义分享的问题
查看>>
分布式架构原理解析,Java开发必修课
查看>>
webpack性能优化不完全指北
查看>>
React Hooks 札记
查看>>
代码混淆
查看>>
JNI的语法
查看>>
JS常用数组方法总结笔记
查看>>
react hooks api 踩坑经历(useEffect的闭包陷阱和useRef)
查看>>
分布式图谱
查看>>
Java移位运算符
查看>>
作用域、作用域链及闭包(一)
查看>>
探索Android Q上的位置权限
查看>>
在 HTTPS 项目中使用百度地图 API
查看>>
高阶函数之美--函数记忆
查看>>
BCH洗牌武器 | CashShuffle大规模混币工具
查看>>
给编程入门者的唠叨话(全栈路线)
查看>>
tapable
查看>>