《R数据可视化手册》——3.8 绘制百分比堆积条形图

简介:

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

3.8 绘制百分比堆积条形图

问题
如何绘制可展示百分比的堆积条形图(又叫百分比堆积条形图)?

方法
首先,通过plyr包中的ddply()函数和transform()函数将每组条形对应的数据标准化为100%格式,之后,针对计算得到的结果绘制堆积条形图即可,如图3-20所示。

library(gcookbook) # 为了使用数据
library(plyr)
# 以Date为切割变量()对每组数据进行transform()
ce <- ddply(cabbage_exp, "Date", transform,
       percent_weight = Weight / sum(Weight) * 100)

ggplot(ce, aes(x=Date, y=percent_weight, fill=Cultivar)) +
  geom_bar(stat="identity")

df26f81cb8713f8f954284a774639136e96a6947

讨论
我们用ddply()函数计算每组Date变量对应的百分比。本例中,ddply()函数根据指定的变量Date对数据框cabbage_exp进行分组,并对各组数据执行transform()函数(ddply()函数中设定的其他参数也会传递给该函数)。

下面是cabbage_exp数据,从中可以看出ddply()命令对其进行操作的过程。

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
   c52 d20  3.11 0.7908505 10 0.25008887
   c52 d21  1.47 0.2110819 10 0.06674995

ce <- ddply(cabbage_exp, "Date", transform,
       percent_weight = Weight / sum(Weight) * 100)

Cultivar Date Weight    sd n     se percent_weight
   c39 d16  3.18 0.9566144 10 0.30250803    58.45588
   c52 d16  2.26 0.4452215 10 0.14079141    41.54412
   c39 d20  2.80 0.2788867 10 0.08819171    47.37733
   c52 d20  3.11 0.7908505 10 0.25008887    52.62267
   c39 d21  2.74 0.9834181 10 0.31098410    65.08314
   c52 d21  1.47 0.2110819 10 0.06674995    34.91686

计算出百分比之后,就可以按照绘制常规堆积条形图的方法来绘制百分比堆积条形图了。

跟常规堆积条形图一样,我们可以调整百分比堆积条形图的图例顺序、更换调色板及添加边框线,如图3-21所示。

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

33bd49a461aa5719bd7aec83b964e362d7f907e4

参见
更多关于分组对数据进行变换的内容可参见15.16节。

相关文章
|
8月前
|
存储 缓存 数据库
如何开发人事及OA管理系统的全局基础设置板块?(附架构图+流程图+代码参考)
在企业数字化转型中,人事管理系统(HRM)与办公自动化系统(OA)已成为核心工具。本文详解全局基础设置的三大核心模块:部门岗位基础表、工作日历和工作地点基础表,涵盖功能设计、业务流程、开发技巧与代码示例,助力企业优化系统架构,提升管理效率与扩展性。
|
小程序
企业人才招聘小程序模板源码
企业人才招聘小程序模板源码
325 3
|
10月前
|
存储 运维 监控
OpenFeature 实战:统一特征开关在风控模型的落地与灰度发布方案
在金融风控场景中,模型迭代速度与线上稳定性之间的平衡是一大挑战。传统硬编码方式存在耦合度高、控制粒度粗、缺乏审计等问题,导致误拦截损失显著。本文介绍了基于 OpenFeature 的解决方案,通过动态配置、细粒度控制和多语言支持实现高效特征管理,并结合灰度发布、熔断机制和安全审计提升系统稳定性与发布安全性。实战数据显示,该方案显著缩短上线周期、降低故障率并提升模型覆盖率,具备高可用性和可扩展性,适用于复杂风控环境下的策略迭代需求。
600 8
|
自然语言处理 数据处理 Python
python操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
3674 60
|
资源调度 数据可视化 安全
一文搞懂:全网最全卡方检验汇总
一文搞懂:全网最全卡方检验汇总
2424 0
|
Ubuntu Linux 数据库
Linux:报错“command not found: yum”及yum和apt-get的区别
Linux:报错“command not found: yum”及yum和apt-get的区别
2361 0
Linux:报错“command not found: yum”及yum和apt-get的区别
|
Ubuntu Shell Python
Python基础环境配置管理总结
Python基础环境配置管理总结pyenv 一键安装 ubuntu脚本安装 curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash centos 7 curl -L https://github.
1892 0
|
Perl
sed删除不匹配正则表达式的行(保留匹配行)
sed删除不匹配正则表达式的行(保留匹配行)
1629 2
|
数据采集 搜索推荐 数据可视化
使用R语言进行药物动力学分析
【4月更文挑战第27天】R语言在药物动力学分析中扮演关键角色,用于数据处理(如dplyr, readr, tidyr包)、模型建立(如drc包的一室、多室模型)、参数估计(nls, nlsList, lme4, FME包)及结果解释(summary, predict, plot, boot, bayesplot包)。通过实例,展示了如何使用R建立药物吸收和清除模型,助力药物研发和个性化医疗。随着数据分析技术发展,R在药物动力学领域的应用将更加广泛。
736 1
|
数据可视化 数据挖掘 Go
GOplot|宝藏R包,拯救你的GO富集结果,杜绝平庸的条形图
`GOplot`是一款R包,专注于GO富集分析的可视化,提供多种图表类型如GOBar、GOBubble、GOCircle、GOChord和GOVenn等。这些函数允许用户轻松修改参数,定制颜色、大小和排序,实现数据的直观展示。示例代码展示了如何使用这些功能创建不同类型的图形,并提到了一个配套的shiny应用。`GOplot`简化了复杂的数据可视化过程,适合快速高效地展示差异分析结果。
1020 0

热门文章

最新文章

下一篇
开通oss服务