导读
饼图可以展示整体中各个部分占整体的比例。利用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 # 查看数据,如下:
C.1 C.2 C.3 C.4
R.1 25 18 20 20
R.2 18 20 19 8
R.3 21 20 21 13
R.4 22 19 25 7
R.5 28 28 13 20
二、画一个饼图
以第一列为绘图输入画一个饼图。
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,绘图结果如下: