R语言 如何在ggplot2中绘制显示百分比的叠加条
在这篇文章中,我们将看到如何用R编程语言在ggplot2中绘制显示百分比的叠加条。
R语言中的plyr包是用来将数据分割开来,对其进行操作,然后再将其重新组合起来。它被用来进行数据操作。这个包可以通过以下命令下载并安装到工作空间。
install.packages("plyr")
R中的ddply方法用于在数据框的每个子集上应用一个函数后将结果合并成一个数据框。
语法: ddply(.data, .variables, .fun = NULL)
参数:
- data: 要使用的数据框
- variables: 用于分割数据框的变量
- fun: 要在数据框上应用的函数
这里要应用的函数可以是转换函数,它可以用来在数据框中追加、删除或改变列。它可以用来在数据框中添加更多的列。百分比列可以通过计算数据框架中每个组件的分数添加到数据框架中。
然后,百分比列可用于使用”%”符号附加标签。该列是使用paste0()方法构建的,该方法通过将百分比与相应的”%”符号结合起来,来连接字符串。
paste0(str1, str2)
ggplot2包用于数据的可视化和描绘图表。这个包可以通过以下命令下载并安装到工作空间。
install.packages("ggplot2")
这个包中的ggplot方法被用来构造各种类型的图,比如散点图、boxplots等。这些图把要使用的数据框架作为输入,同时使用x和y坐标提供美学映射。其他参数可以通过使用分组列指定的颜色来添加。
语法: ggplot (data, mapping = aes(x= , y= , fill = ))
参数:
- data: 要使用的数据框
- mapping: 由aes()方法提供的唯美的映射。
本软件包中的geom_bar()方法用于使条形图的高度与每组的病例数成正比。它的语法如下:
语法: geom_bar(position , stat = “identity” )
参数 :
- position: 位置调整
geom_text方法可以用来为堆积的条形图添加文本,并将它们堆积在一起。标签被分配为计算出的百分比标签字符串。标签可以使用标签参数和其对应的位置来分配。它可以使用尺寸参数进一步定制。
语法: geom_text(mapping = NULL, position , size)
参数:
- mapping: 美学贴图
- position: 用于该层上的重叠点的位置调整
- size: 添加的文本的大小
例子 。
# importing the required library
library(plyr)
library(ggplot2)
# creating the data frame
data_frame < - data.frame(stringsAsFactors=FALSE,
col1=c(rep(5: 7, each=4)),
col2=c(rep(1: 4, each=3)),
col3=c(1: 12))
# printing the data frame
print("original dataframe")
print(data_frame)
# adding the
data_frame = ddply(data_frame, .(col2), transform,
percentage=col1/sum(col1) * 100)
# adding the percentage label
data_frameprcntlabel = paste0(sprintf("%.0f",
data_framepercentage),
"%")
# printing the modified data frame
print("converted dataframe")
print(data_frame)
# adding graph of plotting data
ggplot(data_frame, aes(x=factor(col2), y=col3, fill=col1)) +
geom_bar(position=position_stack(), stat="identity") +
geom_text(aes(label=prcntlabel), position=position_stack(vjust=0.5), size=2) +
coord_flip()
输出
[1] "original dataframe"
col1 col2 col3
1 5 1 1
2 5 1 2
3 5 1 3
4 5 2 4
5 6 2 5
6 6 2 6
7 6 3 7
8 6 3 8
9 7 3 9
10 7 4 10
11 7 4 11
12 7 4 12
[1] "converted dataframe"
col1 col2 col3 percentage prcntlabel
1 5 1 1 33.33333 33%
2 5 1 2 33.33333 33%
3 5 1 3 33.33333 33%
4 5 2 4 29.41176 29%
5 6 2 5 35.29412 35%
6 6 2 6 35.29412 35%
7 6 3 7 31.57895 32%
8 6 3 8 31.57895 32%
9 7 3 9 36.84211 37%
10 7 4 10 33.33333 33%
11 7 4 11 33.33333 33%
12 7 4 12 33.33333 33%