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


7c8dc1f7008a0567bebba2a7b7b1e36b44672b65

讨论
我们用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")


454acb42bbe54ca4ba626c6bb0ff782b42cf3bd9

参见
更多关于分组对数据进行变换的内容可参见15.16节。
相关文章
|
Web App开发 网络协议 关系型数据库
深度解析TCP协议:特点、应用场景及市面上常见软件案例
深度解析TCP协议:特点、应用场景及市面上常见软件案例
2115 1
深度解析TCP协议:特点、应用场景及市面上常见软件案例
|
BI
Qt 报表实现(二)----QtXlsx
Qt 报表实现(二)----QtXlsx
621 2
|
异构计算
PCIe链路训练(Link Training) Debug案例解析
有关Xilin FPGA开发版PCIe link up issue debug过程的文章,小编把里面提到的一个案例在这里给大家分享一下。
|
11月前
|
存储 数据可视化 Python
单细胞RNA速率分析: scVelo入门教程
单细胞RNA速率分析: scVelo入门教程
单细胞RNA速率分析: scVelo入门教程
|
6月前
|
人工智能 数据可视化 开发者
抖音怎么发教学智能体的视频?阿里云百炼实战指南,智能体来了教你落地​
2025年,AI智能体教学成抖音新风口。本文详解如何借助阿里云百炼平台,从搭建教学智能体、生成合规视频到SEO优化,全流程打造高搜索量教学内容,助力开发者实现技术变现与品牌曝光,抢占AI传播先机。(238字)
|
9月前
|
并行计算 机器人 网络安全
阿里云服务器上部署ROS2+Isaac-Sim4.5实现LeRobot机械臂操控
本文介绍了如何在阿里云上申请和配置一台GPU云服务器,并通过ROS2与Isaac Sim搭建机械臂仿真平台。内容涵盖服务器申请、系统配置、远程连接、环境搭建、仿真平台使用及ROS2操控程序的编写,帮助开发者快速部署机器人开发环境。
3801 5
|
SQL 监控 数据库
如何解决 SQL Server 占用内存过多问题
SQL Server 占用过多内存会导致响应缓慢和查询性能低下。解决流程包括:1) 查看内存使用情况,2) 分析各数据库内存占用,3) 优化 SQL Server 配置(如限制最大内存),4) 优化查询(如创建索引),5) 持续监控效果。通过这些步骤可有效控制内存占用,提升系统性能。
1435 0
文件太大不能拷贝到U盘怎么办?实用解决方案全解析
当我们试图将一个大文件拷贝到U盘时,却突然跳出提示“对于目标文件系统目标文件过大”。这种情况让人感到迷茫,尤其是在急需备份或传输数据的时候。那么,文件太大为什么会无法拷贝到U盘?又该如何解决?本文将详细分析这背后的原因,并提供几个实用的方法,帮助你顺利将文件传输到U盘。
|
数据可视化 算法
【视频】分类模型评估:精确率、召回率、ROC曲线、AUC与R语言生存分析时间依赖性ROC实现
【视频】分类模型评估:精确率、召回率、ROC曲线、AUC与R语言生存分析时间依赖性ROC实现

热门文章

最新文章

下一篇
开通oss服务