技术贴 | R语言:pie绘制饼图
本文由阿童木根据实践经验而整理,希望对大家有帮助。
原创微文,欢迎转发转载。
饼图可以展示整体中各个部分占整体的比例。利用label,col,border可分别调整pie图的标签、饼颜色、边颜色。如果输入数据是矩阵,即需要绘制很多个指数的饼图,可以使用for循环快速批量画图,这是一般基于图形界面的画图软件做不到的。下面是以上参数的使用方法。
一、模拟输入数据
set.seed(1995)
# 随机种子
data=matrix(abs(round(rnorm(20, mean=20, sd=5))), 5, 4)
# 随机正整数,5行,4列
colnames(data)=paste("C", 1:4, sep=".")
# 列名
rownames(data)=paste("R", 1:5, sep=".")
# 行名
data # 查看数据,如下:
二、画一个饼图
>以第一列为绘图输入画一个饼图
pdf("pie1.pdf")
pie(data[,1])
dev.off()
>打开pie1.pdf,绘图结果如下:
三、配色
>使用RColorBrewer包的brewer.pal函数设置配色方案为"Set3"。"Set3"能给相邻单元绘上对比鲜明的颜色。
关键参数:
border="white"# 边界线条设为白色
col=brewer.pal(5,"Set3") # 5种颜色,Set3方案
library(RColorBrewer)
pdf("pie2.pdf")
pie(data[,1], border="white", col=brewer.pal(5, "Set3"))
dev.off()
>打开pie2.pdf,绘图结果如下:
四、定制标签
>关键参数:
data[,1]/sum(data[,1]# 计算每个占总比
round(xx,1) # 保留一位小数
rownames(data)# 取行名
paste(xx,"(", percent, "% )") # 字符粘贴
pdf("pie3.pdf")
percent <- round(data[,1]/sum(data[,1])*100, 1)
# 计算比例,保留一位小数
label <- paste(rownames(data), "(", percent, "% )")
# 定制标签
pie(data[,1], border="white", col=brewer.pal(5, "Set3"), label=label)
dev.off()
>打开pie3.pdf,绘图结果如下:
五、画多个饼图
>使用for循环将多个饼图画到一个pdf文件中。
关键参数:
length(data[1,])# 计算列数作为for循环数
main=colnames(data)[i]# 以列名命名每个pie
pdf("pie4.pdf")
for(i in 1:length(data[1,]))
{
percent <- round(data[,i]/sum(data[,i])*100, 1)
# 计算比例,保留一位小数
label <- paste(rownames(data), "(", percent, "% )")
# 定制标签
pie(data[,i], border="white", col=brewer.pal(5, "Set3"), label=label, main=colnames(data)[i])
}
dev.off()
>打开pie4.pdf,绘图结果如下:
感谢阅读~
你可能还喜欢
1 技术贴 | 16S专题 | 简单介绍如何用自己的笔记本处理高通量16S数据
4 技术贴 | 宏转录组专题 | DDBJ数据库:宏转录组测序数据下载