《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节。

相关文章
|
17天前
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
|
4月前
|
数据可视化 定位技术 Python
数据可视化——绘制带有时间线的柱状图
数据可视化——绘制带有时间线的柱状图
|
4月前
|
SQL
Grafana如何展示柱状图-将折线图调整为柱状图
Grafana如何展示柱状图-将折线图调整为柱状图
|
4月前
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程(上)
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程
342 0
|
4月前
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程(下)
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程
312 0
|
数据可视化 JavaScript API
echarts数据可视化-动态折线堆积图
echarts数据可视化-动态折线堆积图
206 0
|
数据采集 数据可视化 数据挖掘
还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
本文讲解9种『炫酷高级』的数据图表,可视化地表示比例或百分比:哑铃图、甜甜圈图、华夫饼图、堆积条形图...附上代码,快快用起来吧!
837 2
还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵